对于只具有可空属性的实体框架中的复杂类型,为什么对于类似下面的内容需要实例化复杂类型:
[ComplexType]
public class Address {
public string Address1 { get; set; }
}
public class Customer {
[Key]
public int CustomerId {get;set;}
public Address Address {get;set;}
}
更具体地说,如果您没有声明和地址类型,则会得到“非可空成员的空值。成员:'地址'。”根据{{3}}。
只要复杂类型中的所有属性都可以为空,为什么实体框架需要一个Address实例?由于Address1可以为空,为什么它不能只假设并在行中创建表(和列Address_Address1)和null值,就像我创建了一个带有空Address1的Address实例一样?
或者是否有我可以申请实现的属性/流畅设置?
答案 0 :(得分:8)
看看这个问题Entity Framework 5 DbUpdateException: Null value for non-nullable member。
即使所有属性都为null,也需要实例化复杂类型。
答案 1 :(得分:8)
即使属性可以为空,包含它们的类也不是。您可以Address.Address1
作为null
,但Address
本身必须实例化。