Required 属性是否对导航有任何影响 属性?
Does the Required attribute have any effect on a navigation property?
我在 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 否则在尝试保存到数据库时会收到错误;如果导航 属性 不为空,ChangeTracking 会将 FK 设置为与其 PK 值相同。
这意味着两个数据注释的意思完全相同,因为它们几乎相互暗示 - 这是假设 属性 被正确配置为 FK/navigation 属性 对应到另一个,并且这两个属性(或相关类型,从那时起无论如何都不会将这种类型的对象保存到数据库中)都没有被明确地排除在模型之外。
我在 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 否则在尝试保存到数据库时会收到错误;如果导航 属性 不为空,ChangeTracking 会将 FK 设置为与其 PK 值相同。
这意味着两个数据注释的意思完全相同,因为它们几乎相互暗示 - 这是假设 属性 被正确配置为 FK/navigation 属性 对应到另一个,并且这两个属性(或相关类型,从那时起无论如何都不会将这种类型的对象保存到数据库中)都没有被明确地排除在模型之外。