Required属性是否对导航属性有任何影响?

时间:2017-06-12 11:34:47

标签: c# entity-framework entity-framework-6 data-annotations

我在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属性?

1 个答案:

答案 0 :(得分:2)

除了评论对话之外,还要回答这个问题:

[必需]表示对象必须不为null,因此在不可为空的类型上,此注释没有区别。 对于可空类型,如果导航属性或FK属性以这种方式注释没有区别 - 如果FK不为null,则导航属性必须是具有此id的对象,否则您在尝试时会收到错误保存到数据库;如果导航属性不为null,则ChangeTracking将FK设置为​​与其PK值相同。

这意味着两个数据注释完全相同,因为它们几乎相互暗示 - 这假设一个属性被正确配置为对应于另一个的FK /导航属性,并且两个属性都没有(或者相关类型,从那时起,这种类型的对象无论如何都不会保存到数据库中)明确地从模型中排除。