У меня странная проблема с наследованием TPC с использованием C# Entity Framework Codefirst и Fluent Api. У меня есть 3 класса с именем Person
, Invoice
и PeriodicInvoice
, как вы можете видеть ниже. Вот краткое изложение моего кода:Ошибка наследования TPC
Invoice
класс и его класс конфигурации:
public class Invoice : InvoiceBase
{
public Person User { get; set; }
}
public class InvoiceConfig : EntityTypeConfiguration<Invoice>
{
public InvoiceConfig()
{
this.Map(m => { m.MapInheritedProperties(); m.ToTable("Invoices"); });
}
}
PeriodicInvoice
класс и его конфигурация:
public class PeriodicInvoice : InvoiceBase
{
// Some extra properties.
}
public class PeriodicInvoiceConfig : EntityTypeConfiguration<PeriodicInvoice>
{
public PeriodicInvoiceConfig()
{
this.Property(x => x.SuspendOnExpire).IsRequired();
this.Map(m => { m.MapInheritedProperties(); m.toTable("PeriodicInvoices"); });
}
}
Когда я запускаю код, появляется эта ошибка:
Ассоциация «Invoice_User» между сущностью типы «Счет-фактура» и «Лицо» недействительны. В иерархии TPC независимые ассоциации допускаются только к наиболее производным типам.
Я знаю, что это означает, что я должен включать в себя свойство User
к классу PeriodicInvoice
и не использовать его в классе Invoice
.
Но, нет ли другого способа решить эту проблему? Спасибо.