代码优先复杂类型

复杂类型允许你将数据库表的选定字段映射到主类型的子类型的单个类型。

[ComplexType]
public class Address
{
    public string Street { get; set; }
    public string Street_2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }
}

然后,可以在多个实体类型中使用此复杂类型。它甚至可以在同一实体类型中多次使用。

public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    ...
    public Address ShippingAddress { get; set; }
    public Address BillingAddress { get; set; }
}

然后,此实体类型将存储在数据库中的表中,该表看起来像这样。

StackOverflow 文档

当然,在这种情况下,1:n 关联(客户地址)将是首选模型,但该示例显示了如何使用复杂类型。