我想在实体框架中的复杂类型上定义[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。
答案 0 :(得分:8)
复杂类型无法实现。如果希望它可以为空,则需要创建一个Address实体。
EF对复杂类型的作用是将属性映射到同一个表 - 这听起来像你想要的那样。
正因为如此 - 您的示例的架构将如下所示:
使用Address_PostCode的非可空列,因为它在数据库中无效,所以没有办法让EF创建行,而没有对象有地址和邮政编码。