【发布时间】:2016-02-16 00:46:37
【问题描述】:
我有三张桌子,player、player points 和 team。我有一个外键设置为球队和球员积分,但是当我尝试插入球员表时,我收到以下错误。
try
{
string id = Request.QueryString["id"];
if (id != "00000000-0000-0000-0000-000000000000")
{
_playerId = string.IsNullOrEmpty(id) ? new Guid() : new Guid(id);
}
string teamIds = Request.QueryString["teamId"];
if (teamIds != "00000000-0000-0000-0000-000000000000")
{
_teamId = string.IsNullOrEmpty(id) ? new Guid() : new Guid(id);
}
player _player = new player();
_player = _dal.GetPlayerBYID(_playerId);
_player.Name = txtFullName.Text;
_player.email = txtEmail.Text;
_player.address = txtAddress.Text;
_player.description = txtDescription.InnerText;
_player.gender = dlGenders.SelectedValue.ToString();
_player.regEmailSent = chksendActivationEmail.Checked;
_player.modifiedDate = DateTime.Now;
_player.teamId = new Guid(ddlTeam.SelectedValue.ToString());
player_points _points = new player_points();
if (Convert.ToDateTime(dateOfBirth.Text) == new DateTime(1900, 1, 1))
_player.dob = Convert.ToDateTime(dateOfBirth.Text);
if (_player.player_id == null)
_player.player_id = _dal.genPlayerID(new Guid("B9B2A89A-2295-4E48-BBA4-9DC28A1855FB"), new Guid("6E424913-A9A4-4A46-9785-C8AFA09C82DB"));
if (_teamId != Guid.Empty)
{
_player.teamId = _teamId;
}
if (id == "00000000-0000-0000-0000-000000000000")
{
_dal.SoccerEntities.AddToplayers(_player);
}
_dal.SoccerEntities.SaveChanges();
}
我的问题是:我如何从保存中获取 id 值以便能够链接我的玩家积分表,因为我遇到的错误是:
INSERT 语句与 FOREIGN KEY 约束“FK_player_points”冲突。数据库“DB_9DF962_davidbuckleyni37”、表“dbo.player_points”、“id”列发生冲突。\r\n语句已终止。
显然,在我可以添加到玩家积分表之前,我需要在 SQL Server 端使用newid() 填写的玩家 ID 号。
这个截图显示了我的玩家表:
这个显示了我的玩家积分表:
外键是基于玩家ID的,所以我认为我必须记录玩家积分才能进行保存,但是当我没有保存ID grrr压力很大时,我如何获得玩家ID
现在一个玩家可以有很多玩家点值,所以这是我设置它的正确方式
这是我的 edmx,用于显示我的实体,如 marcs 所描述的那样
当我尝试使用 marc 的方法时,由于某种原因,我没有添加选项,这是为什么?
marc 的解决方案不起作用,因为我似乎没有并在我的玩家积分上添加功能。
【问题讨论】:
-
如果您使用的是Entity Framework,您可以简单地将
_points分配给_player的导航属性到player_point表,然后只需在一次调用中保存播放器(包括这一点) - EF 将处理所有需要插入的 ID 的修复..... -
@marc_s 能否请您提供我正在使用 ef5 和 Web 表单的答案以及代码示例,请将其标记为答案?有了参考资料,我将标记为答案,所以我会的,所以我认为使用这种方法我需要每个用户至少有一个玩家积分条目,如果我不想要任何条目,直到用户从前端自己插入它你能解释一下这两种方式吗?
-
很遗憾,您没有向我们展示您的实体是什么样子.....
-
@marc_s 一秒上传我的 edmx
-
@narc_s 请查看我添加了 edmx 的更新
标签: c# asp.net sql-server entity-framework webforms