Вначале я использую Entity Framework 4 CTP5-код и имею отображение таблицы на иерархию (TPH).Некоторые из моих классов в иерархии имеют общие свойства.
public class BaseType
{
public int Id { get; set; }
}
public class A : BaseType
{
public string Customer { get; set; }
public string Order { get; set; }
}
public class B : BaseType
{
public string Customer { get; set; }
public string Article { get; set; }
}
public class C : BaseType
{
public string Article { get; set; }
public string Manufacturer { get; set; }
}
Соглашение по умолчанию сопоставляет это со следующими столбцами:
- Id
- Article1
- Артикул2
- Заказчик1
- Заказчик2
- Производитель
- Заказ
- Тип
Iхотите, чтобы EF4 разделял общие свойства, чтобы в итоге получилось следующее:
- Id
- Артикул
- Клиент
- Производитель
- Заказ
- Тип
Помимо уменьшенного количества столбцов, он имеет преимущество в том, что может искать записи на основе статьи, например, без необходимости знать, какие типыточно иметь свойство Article.
Я попытался сопоставить каждое общее свойство с одним и тем же столбцом:
modelBuilder.Entity<B>().Property(n => n.Article).HasColumnName("Article");
modelBuilder.Entity<C>().Property(n => n.Article).HasColumnName("Article");
, но при этом возникло следующее исключение:
Указана схемане является действительным.Ошибки: (36,6): ошибка 0019: каждое имя свойства в типе должно быть уникальным.Имя свойства Article было уже определено.
Кто-нибудь знает, как обойти это правило проверки?