HasOptional对应的DataAnnotation属性

时间:2011-12-13 13:15:11

标签: c# entity-framework entity-framework-4 ef-code-first

代码优先的流畅API的 HasOptional 方法有一个DataAnnotation属性对应吗?

我想用属性标记我的属性,而不是使用流畅的API。

这是我目前的型号& OnModelCreating代码:

public class Employee
{
  #region Properties

  public int EmployeeID { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }

  public int? ManagerID { get; set; }
  public Employee Manager { get; set; }

  #endregion
}

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Entity<Employee>().
      HasOptional(e => e.Manager).
      WithMany().
      HasForeignKey(m => m.ManagerID);
  }

由于

1 个答案:

答案 0 :(得分:5)

不,这样的属性不存在(与[Required]属性相反)。我认为原因是没有必要因为

  • 您的模型根本不需要映射,因为约定应该检测外键,并且关系是可选的(因为FK属性可以为空)
  • 如果您的模型中没有外键属性,则关联关系始终是可选的,因为默认情况下,没有公开外键的导航引用始终是可选的。这里需要[Required]属性才能建立所需的关系。
  • 如果您的外键属性不可为空,则不允许使用可选关系。

因此,似乎不需要这样的属性(除非可能在类定义中使可选关系显式化,但属性上方的注释也会这样做)。