【发布时间】: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