我在EF数据模型中有以下代码:
id | user_id | title | body
5 7 complain 1 Complain 1
[Required]
public IdentityTypeDocument IdentityType { get; set; }
[Required]
[ForeignKey(nameof(IdentityType))]
public int? IdentityTypeId { get; set; }
属性上的第一个Required
- 是否与第二个属性相同 - IdentityTypeDocument
属性?
答案 0 :(得分:2)
除了评论对话之外,还要回答这个问题:
[必需]表示对象必须不为null,因此在不可为空的类型上,此注释没有区别。 对于可空类型,如果导航属性或FK属性以这种方式注释没有区别 - 如果FK不为null,则导航属性必须是具有此id的对象,否则您在尝试时会收到错误保存到数据库;如果导航属性不为null,则ChangeTracking将FK设置为与其PK值相同。
这意味着两个数据注释完全相同,因为它们几乎相互暗示 - 这假设一个属性被正确配置为对应于另一个的FK /导航属性,并且两个属性都没有(或者相关类型,从那时起,这种类型的对象无论如何都不会保存到数据库中)明确地从模型中排除。