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

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

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; }
}


我没有编译错误,当我加载访问客户模型的视图时,在字段设置错误中出现了未知列。


  “字段列表”中的未知列“ 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是否缺少我所需要的东西?

最佳答案

默认情况下,EF期望使用{complextypename_propertyname}格式的复杂类型属性列。如果您手动创建表并以不同的方式命名列,则将不匹配。您能否尝试相应地重命名列(例如,将街道重新命名为address_street),然后尝试一下是否可行。或者,您应该能够在复杂类型的属性上添加一个属性,以告诉EF不应使用约定,而应使用您指定的名称(例如,Street属性的[Column(“ street”)])。

09-26 20:46