EF: Kann ich TPH und TPT, wenn abstrakte Basis und ein paar konkrete Typen in der TPH-Tabelle sind, und andere Typen haben einen eigenen Tisch?

StackOverflow https://stackoverflow.com/questions/6034985

Frage

Zunächst sind diese Fragen ähnlich, aber definitiv nicht dasselbe:

Kann ich mischen? Tabelle pro Hierarchie und Tabelle pro Type in Entity Framework? - bezieht sich auf ein anderes Szenario.

Entity Framework: Mischen Sie Tabelle und Tabelle pro Hierarchie - ein weiteres Szenario, das trotz der Annahme der Antwort auf das erste Szenario nicht damit zusammenhängt (*).

(*) Zweitens, dass ich in Entity-Framework erfolgreich gemischtes Tabellen-pro-Typ und Tischperipherarchie habe, wenn Base-Entität mit Tabelle-pro-Entität und dem Tisch mit dem Diskriminator des Tabellens zugeordnet ist. Die Per-Hierarchie ist die Kette absenkt.


Ich versuche, Folgendes zu kardieren:

Tabellen: generasacodicetagpre.

Entitäten: generasacodicetagpre.

vor dem Hinzufügen von Entity3 funktionierten Wappen.

Nach dem Hinzufügen von Entity3 und seiner Mapping erhalte ich den folgenden Fehler beim Kompilieren:

Fehler 1 Fehler 3026: Problem beim Zuordnen von Fragmenten, die an den Zeilen 980, 986, 995: Datenverlust oder Schlüsseleinschränkungsverletzung in der Tabelle ist, ist in der Tabelle ausgestattet. Eine Entität mit dem Schlüssel (PK) wird nicht umrunden, wenn: (Pk ist in 'Basisdaten' Entityset und Entity ist ein Typ [MYNAMACEPACE.Entity3]) Pfad \ zu \ my.edmx 981 15 MyAssembly

  • Gibt es eine Möglichkeit, diese Arbeit zu machen?
  • Wenn es möglich ist, den EDMX zu hacken, um diese Arbeit zu erstellen, verliere ich den Hack auf jedem Update aus der Datenbank?
War es hilfreich?

Lösung

I found a workflow that enables performing such mappings via designer:

  1. Create BaseEntity, Entity1, Entity2, Entity3
  2. Map BaseEntity to BaseTable as abstract
  3. Map Entity1 to BaseTable with condition
  4. Map Entity2 to BaseTable with conditions
  5. Map Entity3 to ChildTable3
  6. Unmap BaseEntity

To add additional child tables later on:

  1. Remap BaseEntity
  2. Map new child tables
  3. Unmap BaseEntity
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top