2

我又遇到了实体框架的问题。

我正在尝试使用外键更新表,

我在插入时遇到问题,但通过编辑 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();

在更新我得到以下异常,

发生参照完整性约束冲突:当对象具有非临时键时,不能更改作为参照完整性约束一部分的属性。

任何反馈都会非常有帮助。

问候,

萨布

4

1 回答 1

0

我不确定,但您可能想检查在设计器中创建/更新模型时是否勾选了“在模型中包含外键列”。如果你勾选了,你可能会发现设置对象是不够的,你可能还需要设置 ID 或只设置 ID。

例如。你可能需要做:

data.RoleId = role.RoleId;

结合设置对象或代替设置对象。

就个人而言,我没有勾选“在模型中包含外键列”,因为它给我带来了各种各样的头痛,我不记得与一年或更早之前的情况完全一样。有时这很痛苦,因为能够使用 ID 进行过滤/搜索/更新是件好事,但我已经学会在没有 ID 的情况下生活,以避免像您遇到的烦恼。

于 2012-06-19T01:31:18.620 回答