我有一个Candidate
实体,下面有一些关联示例。我有一个视图模型没有引用属性,只有外键属性,我使用AutoMapper将视图模型映射回实体。当我尝试保存实体时,我收到验证错误,告诉我例如标题字段是必需的。因为虽然我的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?
答案 0 :(得分:3)
删除[Required]
属性。它无法保证您的Guid不为空,因为空Guid {00000000-0000-0000-0000-000000000000}
是有效的Guid,它是数据库中有效的uniqueidentifier
列值。 (Guid
是struct
,不能是null
。)您有责任设置Guid的正确值。由于Guid
不可为空,EF无论如何都会检测到这种关系。
或者,您也可以关闭上下文实例的验证...
context.Configuration.ValidateOnSaveEnabled = false;
...以避免错误。您还可以在Fluent API(HasRequired/WithRequired
)中配置映射,而不是使用数据注释来避免验证错误。