c# - Required 属性对导航属性有什么影响吗?

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

我在 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/

相关文章:

mysql - Entity Framework 向导在 MySQL 上崩溃

entity-framework - Entity Framework 4.3代码中的错误优先-索引已存在

c# - 无法读取 Entity Framework 中的系统 View

c# - 将多个 Include() 与嵌套 Select() 结合使用时出现 EntityCommandExecutionException

c# - 控制台锁定在 TraceSource 方法中的线程

c# - 在 .NET 中将 double 转换为 string 不如 C++ 精确?

c# - EF4 自引用关联 0..1 -> 1

c# - Entity Framework 一到必需的许多映射不起作用

c# - ftp 损坏 exe 和 dll 文件 (C#)

c# - C#编译错误: “lc.exe” exited with code -1073741819