实体框架5中的继承映射出错

时间:2013-05-22 08:58:59

标签: entity-framework inheritance mapping

我有一个包含此架构的现有数据库:

  • 表用户:UserID,FirstName,LastName
  • 表管理器:ManagerID(PK,FK)
  • 表协调员:CoordinatorID(PK,FK)

FK指的是用户

表中的UserID字段

在实体方面,我有:

[Table("User")]
public abstract partial class User
{
  public int UserID { get; set; }
      public virtual string LastName{ get; set; }
  public virtual string Firstname{ get; set; }

    }

[Table("Manager")]
public partial class Manager : User
{
    public int ManagerID{ get; set; }
    }

[Table("Coordinator")]
public partial class Coordinator: User
{
    public int CoordinatorID{ get; set; }
    }

我的问题是实体框架正在搜索名为Manager_UserID的列(User表的一种外键)。但是我的数据库中不存在此列。有没有办法在不改变数据库结构的情况下正确地将数据库映射到模型

感谢

1 个答案:

答案 0 :(得分:0)

将每个表中的主键名称更改为Id。 EF知道这意味着将其作为主键

[更新]

由于你提到了3个表,我认为你需要每个类型的表继承TPT,如上所述 here 您需要在Manager类中提及User作为导航属性。也不要从用户继承。

public partial class Manager  
{
    public int ManagerID{ get; set; }
    public virtual User Manager { get; set; }
}

此外,只有导航属性需要是虚拟的。不是FirstName,LastName

等字段属性

另请查看您的上下文是如何设置的。每个表应该有3个DBS一个