2

请耐心等待,因为我是 C# 和一般编程的新手。

我正在尝试定义与主体类在同一个表中的复杂类型。基本上,这是一个很好的旧用户和地址示例。

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

    //some attributes

    public string street { get; set; }
    public string city { get; set; }
    public string province { get; set; }
    public string country { get; set; }
    public string postal { get; set; }
}

所以我尝试将地址信息分割成它自己的类:

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

    //some attributes
    public Address address { get; set; }
}

[ComplexType]
public class Address
{
    public string street { get; set; }
    public string city { get; set; }
    public string province { get; set; }
    public string country { get; set; }
    public string postal { get; set; }
}

我没有收到编译错误,当我加载访问 Customer 模型的视图时,我在字段集错误中收到一个未知列。

“字段列表”中的未知列“Extent1.address_street”

我基本上遵循了这个例子:http://weblogs.asp.net/manavi/archive/2010/12/11/entity-association-mapping-with-code-first-part-1-one-to-one-associations。 aspx

EF5 有什么我遗漏的东西或有什么不同吗?

4

1 回答 1

3

默认情况下,EF 需要格式为 {complextypename_propertyname} 的复杂类型的属性列。如果您手动创建表并以不同的方式命名列,则会出现不匹配。您可以尝试相应地重命名列(即街道到address_street)并尝试它是否有效。或者,您应该能够向复杂类型的属性添加一个属性,以告诉 EF 不应使用约定,而是使用您指定的名称(例如,街道属性的 [Column("street")])。

于 2012-09-26T14:37:20.120 回答