【问题标题】:ASP.NET MVC EF 6: define a lookup table/modelASP.NET MVC EF 6:定义查找表/模型
【发布时间】:2017-08-10 10:51:01
【问题描述】:

我正在尝试以代码优先的方式定义数据库模型,以查看和显示哪个用户被指定为记录数据的专家。 我有一个非常简单的用户模型:

public class User
{
    public int ID { get; set; }
    public string userName { get; set; }
    public string firstName { get; set; }
    public string lastName { get; set; }
    ....
}

接下来我定义了两个(简单)模型,它们定义了用户可以编辑的数据,并且应该使用下拉列表将专家分配给:

public class Order
{
    public int ID { get; set; }
    public string orderNumber { get; set; }
    public int specialistID { get; set; }
    public virtual User specialist{ get; set; }
}

public class Part
{
    public int ID { get; set; }
    public string partNumber { get; set; }
    public string description { get; set; }
    public int specialistID { get; set; }
    public virtual User specialist{ get; set; }
} 

在没有为 User 模型中的每个表提供导航属性的情况下,可以使用模型之间的哪种关系?

我是否需要使用其他表来定义关系:User.Id-Order.specialistID 和关系:User.Id-Part.specialistID?

Entity Framework 是否有更智能的开箱即用方式?

非常感谢您的回答。 帕斯卡

【问题讨论】:

  • 导航属性是可选的。使用您的模型和默认 EF 约定,您已经定义了 2 个one-to-many 关系。这种关系不需要单独的表(它们在many 侧表中用 FK 列表示)。您的模型是否遇到具体问题?如果是,请编辑您的问题以包含它们。
  • 请问编辑后的数据和专家是多对一还是一对一?
  • 您好,这是一对多的关系。一个专家可以分配到许多部分。第二个关系是一个专家可以负责多个订单。问题是,是否有必要创建额外的表来定义关系。 Ivon Stoev 的回答对我的解决方案运行帮助很大。
  • 谢谢伊万。你的回答对我帮助很大。

标签: asp.net-mvc entity-framework entity-framework-6 lookup


【解决方案1】:

默认情况下,当您向多对一表添加外键约束时,实体框架会将 virtual property 添加到实体类并将 virtual ICollection 添加到 用户。

【讨论】:

    猜你喜欢
    • 2022-01-21
    • 2016-04-02
    • 1970-01-01
    • 2016-03-08
    • 2016-03-15
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多