我有一个 Candidate
实体,其中包含一些关联,如下所示。我有一个没有引用属性,只有外键属性的 View 模型,并且我正在使用 AutoMapper 将 View 模型映射回实体。当我尝试保存实体时,我收到验证错误,告诉我例如标题字段是必需的。因为虽然我的 TitleId
具有有效值,但 Title
仍然为空。
public class Candidate
{
...
[Required]
public string RefNum { get; set; }
[ForeignKey("TitleId")]
[Required]
public Title Title { get; set; }
public Guid TitleId { get; set; }
...
}
PS,我可以看到 Required
属性是如何在这里造成麻烦的,但是我还能怎样坚持 TitleId 必须是一个有效的 ID,而不仅仅是一个空的 Guid?
最佳答案
删除[必需]
属性。无论如何,它不能保证您的 Guid 不为空,因为空的 Guid {00000000-0000-0000-0000-000000000000}
是有效的 Guid,它是有效的 uniqueidentifier
数据库中的列值。 (Guid
是一个 struct
,不能为 null
。)您有责任设置 Guid 的正确值。因为 Guid
不可为空,所以 EF 无论如何都会根据需要检测关系。
或者,您也可以关闭上下文实例的验证...
context.Configuration.ValidateOnSaveEnabled = false;
...以避免错误。您还可以在 Fluent API 中配置映射 (HasRequired/WithRequired
),而不是使用数据注释,以避免验证错误。
关于entity-framework - 为什么我的外键引用属性没有反射(reflect)外键 ID 属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9787396/