【发布时间】:2014-01-02 18:36:22
【问题描述】:
这是我的代码的相关部分:
public partial class Users
{
public string Name { get; set; }
public Guid RoleId { get; set; }
public virtual Role UserRole {get; set; }
}
public partial class Role
{
public string RoleName {get; set; }
public Guid RoleId {get; set; }
}
RoleId 是 Roles 表中的主键,具有 RoleName 和 RoleId。用户有 Name 和 RoleId。
设置用户后,我尝试添加它们
this.Entities.Users.Add(user);
this.Entities.SaveChanges();
但是,我在 Roles 表中收到类型 Violation of PRIMARY KEY 的 DbUpdateException。据我所见,它正在尝试插入附加到用户的角色,这显然会导致该问题。
我尝试在 UserRole 上添加 [NotMapped] 属性,但这并没有解决问题。
EF 生成了这两个类。
我是否需要进行某种架构更改以使其不包含 UserRole 并重构以在用户中使用 RoleId 并以这种方式引用所有内容,或者我还缺少其他什么?
编辑:是否有一个浅拷贝抓取了所需的信息,它现在可以工作了。
【问题讨论】:
-
如果在保存更改之前将 UserRole 设为 null 会发生什么情况?
-
你能显示你“设置用户”的代码吗?
-
@SuperNES 将 UserRole 设置为 null 会导致 InvalidOperationException,因为一个或多个外键属性不可为空。
-
为什么实体框架将现有对象重新插入到我的数据库中? msdn.microsoft.com/en-us/magazine/dn166926.aspx
标签: c# entity-framework