Я использую первый подход 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; }
}
Соглашение по умолчанию отображает это в следующие столбцы:
Я хочу, чтобы EF4 имел общие свойства, чтобы в итоге получилось следующее:
Помимо уменьшенного количества столбцов, это имеет то преимущество, что можно искать записи на основе, например, Article, без необходимости знать, какие именно типы имеют свойство Article.
Я попытался сопоставить каждое общее свойство с тот же столбец:
modelBuilder.Entity<B>().Property(n => n.Article).HasColumnName("Article");
modelBuilder.Entity<C>().Property(n => n.Article).HasColumnName("Article");
, но возникло следующее исключение:
Указанная схема недействительна. Ошибки: (36,6): ошибка 0019: каждое имя свойства в типе должно быть уникальным. Имя свойства «Статья» уже определено.
Кто-нибудь знает, как обойти это правило проверки?