[英]Updating a relationship in Entity Framework generates SQL error
我在这里头疼。 我在Session和User对象之间建立了一对零或一对一的关系,该关系是在Entity Framework 4中使用模型优先方法设计的。
因此,在运行时,我使用
Session session = context.Sessions.FirstOrDefault(s => s.Token.Equals(token));
然后我创建一个用户,根据这样的用户输入创建
user = context.Users.Create();
user.GUID = Guid.NewGuid();
user.Username = username;
user.Firstname = firstname;
user.Lastname = lastname;
user.Session = session;
context.Users.Add(user);
context.SaveChanges();
当我保存时,SQL Server引发异常,告诉我我尝试插入数据库中的GUID已经存在,因为是的,确实如此。 问题是,它不应该插入,它应该更新会话并填充它所属的forein键。 外键位于关系的用户端,这样可以吗?
编辑用户应为新用户。 更新用户不是我要完成的工作。 同样,该错误是因为代码试图插入具有相同主键值的会话,而不仅仅是更新它的前键。
这是应该执行的时间顺序列表:
我得到的是:
违反PRIMARY KEY约束“ PK_Sessions”。 无法在对象“ dbo.Sessions”中插入重复密钥。 重复的键值为VALUE 。 该语句已终止。
请帮帮我,过去2个小时我一直在摆弄。
编辑:更改了我的答案以反映更改后的问题描述:)
确保在处理此类更新时始终使用相同的上下文实例。
这里似乎正在发生的事情是,在一个上下文中检索了会话,但是将用户保存在该上下文的另一个实例中。 因此,在新的背景下,该会议被视为是新会议,因此被(错误地)插入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.