我再次遇到了Entity Framework phew ....
的问题我正在尝试使用外键更新表
我在插入方面遇到了问题,但是通过编辑edmx文件进行了排序。
我使用以下代码更新与角色表有外来关系的用户表
Domain.Data.Role role = db.Role.FirstOrDefault(r => r.RoleName == user.Role);
Domain.Data.User data = db.User.Where(u => u.UserName == username).First();
data.Pass = user.Password.Encrypt();
data.CreatedBy = Login.User.Encrypt();
data.DtCreated = DateTime.Now;
//data.Role = role;
data.Role = (from r in db.Role
where r.RoleName == user.Role
select r).First();
db.SaveChanges();
在更新时,我收到以下异常,
发生了参照完整性约束违规:当对象具有非临时密钥时,无法更改作为参照完整性约束一部分的属性。
任何反馈都会非常有用。
此致
Sab的
答案 0 :(得分:0)
我不确定,但您可能想要检查一下在设计器中创建/更新模型时是否勾选了“在模型中包含外键列”。如果你勾选了这个,你可能会发现设置对象是不够的,你可能还需要设置Id或者只设置id。
例如。你可能需要这样做:
data.RoleId = role.RoleId;
结合设置对象或代替设置对象。
就个人而言,我没有勾选“在模型中包含外键列”,因为它引起了各种令人头疼的问题,我不记得这些问题与一年或更久以前完全不同。有时候这是一种痛苦,因为能够通过使用ID来过滤/搜索/更新是很好的,但我已经学会了在没有它的情况下生活,以避免您遇到的烦恼。