0

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

  • 表用户:用户 ID、名字、姓氏
  • 表管理器:ManagerID(PK,FK)
  • 表协调器:CoordinatorID (PK, FK)

FK 指的是 User 表中的 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 的列(用户表的一种外键)。但是我的数据库中不存在此列。有没有办法在不改变数据库结构的情况下正确地映射数据库和模型

谢谢

4

1 回答 1

0

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

[更新]

由于您提到了 3 个表,我认为您需要按类型继承 TPT 的表,如此 所述 您需要在 Manager 类中将 User 提及为导航属性。也不要从用户那里继承。

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

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

还要看看你的上下文是如何设置的。每个表应该有 3 个 DBSet

于 2013-05-22T09:30:15.657 回答