【问题标题】:Why aren't my foreign key reference properties reflecting the foreign key ID property values?为什么我的外键引用属性不反映外键 ID 属性值?
【发布时间】:2012-03-20 13:08:43
【问题描述】:

我有一个Candidate 实体,下面是一些关联示例。我有一个没有引用属性的视图模型,只有外键属性,我正在使用 AutoMapper 将视图模型映射回实体。当我尝试保存实体时,我收到验证错误,告诉我例如Title 字段是必需的。 因为虽然我的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?

【问题讨论】:

    标签: entity-framework entity-framework-4.1 ef-code-first


    【解决方案1】:

    删除[Required] 属性。无论如何,它不能保证您的 Guid 不为空,因为空的 Guid {00000000-0000-0000-0000-000000000000} 是一个有效的 Guid,它是数据库中的一个有效的 uniqueidentifier 列值。 (Guidstruct,不能是 null。)您有责任设置正确的 Guid 值。因为Guid 不可为空,EF 无论如何都会根据需要检测关系。

    或者,您也可以关闭上下文实例的验证...

    context.Configuration.ValidateOnSaveEnabled = false;
    

    ...避免错误。您也可以在 Fluent API (HasRequired/WithRequired) 中配置映射,而不是使用数据注释来避免验证错误。

    【讨论】:

    • 好的,谢谢。我想的差不多,但在其他地方并没有很好地说明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 2012-03-10
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多