21

对于实体框架中只有可以为空的属性的复杂类型,为什么对于以下内容需要实例化复杂类型:

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

public class Customer {
    [Key]
    public int CustomerId {get;set;}
    public Address Address {get;set;}
}

更具体地说,如果您不声明和地址类型,您将获得“不可为空成员的空值。成员:'地址'。” 根据这个问题

只要复杂类型中的所有属性都可以为空,为什么实体框架需要地址的实例?既然 Address1 可以为空,为什么它不能只假设并在行中创建表(和列 Address_Address1)和空值,就好像我创建了一个带有空地址 1 的地址实例一样?

或者是否有我可以应用的属性/流畅设置来实现这一目标?

4

2 回答 2

8

看看这个问题Entity Framework 5 DbUpdateException: Null value for non-nullable member

即使所有属性都为空,您也需要实例化复杂类型。

于 2013-05-13T08:38:56.193 回答
8

即使属性可以为空,包含它们的类也不是。你可以拥有Address.Address1as null,但Address它本身必须被实例化。

于 2013-05-13T12:14:12.833 回答