Mehrfachvererbung mit Entity Framework TPC

Ich habe versucht, einige Klassen mithilfe von Entity Framework im TPC-Stil zuzuordnen. Dabei ist der folgende Fehler aufgetreten:

Fehler: Der Typ 'A' kann nicht wie definiert zugeordnet werden, da er geerbte Eigenschaften von Typen abbildet, die die Entitätsteilung oder eine andere Form der Vererbung verwenden. Wählen Sie entweder eine andere Vererbungszuordnungsstrategie aus, um geerbte Eigenschaften nicht zuzuordnen, oder ändern Sie alle Typen in der Hierarchie, um geerbte Eigenschaften zuzuordnen und keine Aufteilung zu verwenden.

Dieser Fehler tritt auf, wenn ich die folgenden Klassen verwende:

public abstract class BaseEntityTest
public abstract class BaseEntityTest2 : BaseEntityTest
public abstract class BaseEntityTest3 : BaseEntityTest2
public class A: BaseEntityTest3 // this class is the only one with a table in the db

In der OnModelCreating-Methode habe ich den folgenden Code hinzugefügt, um die TPC-Zuordnung zu erhalten

modelBuilder.Entity<A>().Map(m =>
{
  m.MapInheritedProperties();
  m.ToTable("A");
});

Wenn ich BaseEntityTest2 aus der Struktur ausschließe (sodass A nur von BaseEntityTest anstelle von BaseEntityTest2 erbt), wird der Fehler behoben. Bedeutet das, dass es nicht möglich ist, dieses Mapping zu erstellen oder vermisse ich einfach etwas?

BEARBEITEN:

Eigenschaften von Klassen:

public abstract class BaseEntityTest
{

    [Key]
    public Guid Id { get; set; }

    public String Info { get; set; }

    [Required]
    public DateTime CreationDate { get; set; }

    [Required]
    public String CreationUser { get; set; }

    [Required]
    public DateTime ModificationDate { get; set; }

    [Required]
    public String ModificationUser { get; set; }

    [ConcurrencyCheck]
    [Required]
    public int LockVersion { get; internal set; }
}

public abstract class BaseEntityTest2 : BaseEntityTest
{
    [Required]
    public string Name { get; set; }

    public string Description { get; set; }

}

public abstract class BaseEntityTest3: BaseEntityTest2 
{

    [Required]
    public DateTime FromDate { get; set; }

    public DateTime ThruDate { get; set; }
}

public class A: BaseEntityTest3{
    public String Test { get; set; }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage