我在 EF 数据模型中有以下代码:
[Required]
public IdentityTypeDocument IdentityType { get; set; }
[Required]
[ForeignKey(nameof(IdentityType))]
public int? IdentityTypeId { get; set; }
第一个 Required
- 在 IdentityTypeDocument
属性上与第二个 - int
属性相比有任何意义吗?
最佳答案
除了评论对话并回答这个问题:
[Required] 表示对象必须不为 null,因此对于不可为 null 的类型,此注释没有区别。 对于可空类型,以这种方式注释导航属性或 FK 属性没有区别 - 如果 FK 不为空,则导航属性必须是具有此 ID 的对象,否则您将在尝试保存时收到错误到数据库;如果导航属性不为 null,ChangeTracking 会将 FK 设置为与其 PK 值相同。
这意味着两个数据注释的意思完全相同,因为它们几乎相互暗示 - 这是假设一个属性被正确配置为对应于另一个的 FK/导航属性,并且两个属性(或相关类型,从那时起,无论如何都不会将该类型的对象保存到数据库中)被明确排除在模型之外。
关于c# - Required 属性对导航属性有什么影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44498456/