可选实体框架复杂类型的必需属性

时间:2012-10-12 09:36:05

标签: entity-framework entity-framework-5

我想在实体框架中的复杂类型上定义[Required]属性。例如,我有一个Customer实体,可选Address。 Address实体具有必需的PostCode属性。

[ComplexType]
public class Address {
    public string Address1 { get; set; }
    [Required]
    public string PostCode { get; set; }
}

public class Customer {
    public int CustomerId {get;set;}
    public Address Address {get;set;}
}

我不想将我的Complex类型存储为一个单独的实体(我实际上并没有使用Address,这只是一个简单的问题说明)。我不能将Customer.Address留空,因为这会给出错误:

  

非可空成员的空值。成员:'地址'。

如果我提供一个空的Address实体,由于Required属性,验证在PostCode字段上失败。

有没有办法实现这个目标?我正在使用EF5 / NET4.5。

1 个答案:

答案 0 :(得分:8)

复杂类型无法实现。如果希望它可以为空,则需要创建一个Address实体。

EF对复杂类型的作用是将属性映射到同一个表 - 这听起来像你想要的那样。

正因为如此 - 您的示例的架构将如下所示:

enter image description here

使用Address_PostCode的非可空列,因为它在数据库中无效,所以没有办法让EF创建行,而没有对象有地址和邮政编码。

相关问题