【问题标题】:Entity Framework Add while ignoring property实体框架添加同时忽略属性
【发布时间】: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


【解决方案1】:

您可以在 EF 类设计器的工具窗口中取消映射该属性。

【讨论】:

    猜你喜欢
    • 2014-03-29
    • 1970-01-01
    • 2014-07-17
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多