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?
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?
Lösung
I found a workflow that enables performing such mappings via designer:
- Create BaseEntity, Entity1, Entity2, Entity3
- Map BaseEntity to BaseTable as abstract
- Map Entity1 to BaseTable with condition
- Map Entity2 to BaseTable with conditions
- Map Entity3 to ChildTable3
- Unmap BaseEntity
To add additional child tables later on:
- Remap BaseEntity
- Map new child tables
- Unmap BaseEntity