实体导航属性问题

时间:2011-08-08 17:50:31

标签: entity-framework asp.net-mvc-3

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

换句话说......新闻模型是一个将变成我的mvc项目内部视图的类。此视图将成为将创建新闻项的表单。我们希望选择将供应商与特定新闻项相关联(新闻项目与供应商有关,从下拉列表中选择供应商),但我们希望这是可选的。

如果我将供应商设置为新闻项目的导航属性,那是否意味着需要供应商?我该如何做到这一点?

感谢您的任何提示。

2 个答案:

答案 0 :(得分:1)

您的关系必须是可空的,您可以在DbContext类的OnModelCreating事件中设置此关系。这是一个类似的问题。

EF Code First - 1-to-1 Optional Relationship

答案 1 :(得分:1)

在像这样的类中的EF 4.1中......

public class News
{
    public int NewsId { get; set; }
    public Vendor Vendor { get; set; }
}

...供应商将是可选导航属性(允许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,分别表示可选属性或必需属性。 / p>