我正在使用 EF4 CTP5。这是我的 POCO:
public class Address
{
public int Id { get; set; }
public string Name { get; set; }
public string Line1 { get; set; }
public string Line2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
}
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public List<Address> Addresses { get; set; }
public List<Order> Orders { get; set; }
}
public class Order
{
public int Id { get; set; }
public decimal Total { get; set; }
public Address ShippingAddress { get; set; }
public Address BillingAddress { get; set; }
}
有没有办法让 Address 成为 Order 类的 ComplexType?在玩过这个之后,我猜不是,但也许有一种我没见过的方法。
编辑:为了回应下面的肖恩,我尽力而为:
//modelBuilder.Entity<Order>().Ignore(o => o.BillingAddress);
//modelBuilder.Entity<Order>().Ignore(o => o.ShippingAddress);
modelBuilder.Entity<Order>()
.Property(o => o.BillingAddress.City).HasColumnName("BillingCity");
在运行时失败并出现错误“配置的属性 'BillingAddress' 不是实体 'Order' 上的声明属性。” 尝试使用Ignore()
不起作用。接下来,Hanselman 的文章是 CTP4,但 CTP5 的等价物是:
modelBuilder.Entity<Order>().Map(mapconfig =>
{
mapconfig.Properties(o => new {
o.Id
, o.Total
, o.BillingAddress.City
});
mapconfig.ToTable("Orders");
});
失败并出现错误“'Order' 类型的属性 'BillingAddress.City' 不能包含在其映射中。”
我放弃。也许最终版本会有这样的东西。或者也许我需要切换到 NHibernate =)