请耐心等待,因为我是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; }
}
我没有收到编译错误,当我加载访问客户模型的视图时,我在字段集错误中收到未知列。
"字段列表"中的未知列"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 不应使用约定,而应使用您指定的名称(例如,街道属性的 [Column("street")])。