Да ... хорошо, это было странно ... так что получается, что на самом деле это работает, только если вы достаточно хороши, чтобы сообщить, когда у вас есть производный тип от дочернего базового типа, который не работаетway.
Пример ...
[Table("Reports", "Reporting")]
class Report
{
[Key]
public int Id { get; set; }
public virtual ICollection<Entry> Entries { get; set; }
}
abstract class Entry
{
[Key]
public int Id { get; set; }
public virtual ICollection<Report> Reports { get; set; }
}
[Table("InvoiceEntries", "Reporting")]
class InvoiceEntry : Entry
{
public ICollection<Invoice> Invoices { get; set; }
}
class PaymentEntry
{
[ForeignKey("Payment")]
public int PaymentId { get;set; }
public virtual Payment Payment { get; set; }
}
Оказывается, проблема заключается в том, что объект отчета должен иметь подтип PaymentEntry, отображаемый с использованием Fluent API, и каскад отключается вЧтобы предотвратить множественные каскадные пути.
Если все дочерние типы имеют только стиль InvoiceEntry, то сопоставление EF «многие ко многим» может выяснить это само.избегайте каскадной проблемы или включайте все дочерние типы во многие-многие отношения.