HasOptional counterpart DataAnnotation attribute
本文关键字:attribute DataAnnotation counterpart HasOptional | 更新日期: 2023-09-27 18:17:55
代码优先流畅API的HasOptional方法是否有DataAnnotation属性对应?
我想用attribute来标记我的属性,而不是使用fluent 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);
}
谢谢
不,这样的属性不存在(与[Required]
属性相反)。我认为原因是没有必要,因为
- 你的模型根本不需要映射,因为约定应该检测外键,而且关系是可选的(因为FK属性是可空的)
- 如果您的模型中没有外键属性,则该关系始终是可选的,因为默认情况下,没有公开外键的导航引用始终是可选的。在这里,
[Required]
属性对于建立所需的关系是必要的。 - 如果外键属性不为空,则不允许使用可选关系。
因此,似乎不需要这样的属性(除非可能在类定义中明确表示可选关系,但属性上方的注释也会这样做)。