我有一个供应商模型,我有一个新闻项目模型。我可以在我的新闻项目模型中使我的供应商模型成为可选的吗?
也就是说……新闻模型是一个类,它将在我的MVC项目中转换为视图。该视图将变成一个表单,用于创建新闻项。我们希望这个选项能够将供应商与特定的新闻项关联起来(新闻项是关于供应商的,从下拉列表中选择供应商),但是我们希望这是可选的。
如果我将Vendor设置为News item的导航属性,这是否意味着需要一个Vendor ?我该如何做到这一点?
您的关系必须是可空的,您可以在DbContext类中的OnModelCreating事件中设置此关系。这是一个类似的问题。
EF码优先-1对1可选关系
在EF 4.1中,在这样的类中…
public class News
{
public int NewsId { get; set; }
public Vendor Vendor { get; set; }
}
…Vendor将是一个可选的导航属性(允许Vendor = null
)。EF将假定数据库中有一个可空的外键列。
如果你想在模型中公开一个外键,你必须确保FK属性是空的,可以有一个可选的关系:
public class News
{
public int NewsId { get; set; }
public int? VendorId { get; set; }
public Vendor Vendor { get; set; }
}
对于非空外键属性(public int VendorId { get; set; }
), EF将假定必需的导航属性。
除了这些默认设置之外,您还可以使用数据注释或在Fluent API中自定义关系。
当您在Visual Studio中的模型设计器中工作时,可以选择将关系结束的多重性设置为0...1
或1
,分别表示可选或必需的属性。