【问题标题】:Entity Navigation Property Question实体导航属性问题
【发布时间】:2011-08-08 17:50:31
【问题描述】:

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

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

如果我将 Vendor 设置为 News 项的导航属性,这是否意味着需要 vendor?我将如何做到这一点?

感谢任何提示。

【问题讨论】:

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


    【解决方案1】:

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

    EF Code First - 1-to-1 Optional Relationship

    【讨论】:

      【解决方案2】:

      在这样的类中的 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,分别表示可选或必需属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-10
        • 1970-01-01
        • 2019-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多