Я использую 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 для ComplexType для класса Order?После игры с этим, я думаю, нет, но, возможно, есть способ, которого я не видел.
РЕДАКТИРОВАТЬ : В ответ на Шона ниже, я дал ему мой лучший выстрел:
//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' не является объявленным свойством для объекта 'Порядок'." Попытка использования Ignore()
не работает.Далее, статья Гензельмана - CTP4, но эквивалент CTP5:
modelBuilder.Entity<Order>().Map(mapconfig =>
{
mapconfig.Properties(o => new {
o.Id
, o.Total
, o.BillingAddress.City
});
mapconfig.ToTable("Orders");
});
Сбой с ошибкой «Свойство« BillingAddress.City »типа« Заказ »не может быть включено в его отображение.. "
Я сдаюсь.Возможно, в финальной версии будет что-то вроде этого.Или, может быть, мне нужно перейти на NHibernate =)