实体导航属性问题



我有一个供应商模型,我有一个新闻项目模型。我可以在我的新闻项目模型中使我的供应商模型成为可选的吗?

也就是说……新闻模型是一个类,它将在我的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...11,分别表示可选或必需的属性。

相关内容

最新更新