table-per-hierarchy

___ qstnhdr ___ Entity Framework 4 - Vererbung ___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ tag123inheritance ___ Vererbung ist das System in der objektorientierten Programmierung, das es Objekten ermöglicht, Operationen zu unterstützen, die von anterioren Typen definiert sind, ohne eine eigene Definition angeben zu müssen. Es ist der Hauptvektor für Polymorphie in der objektorientierten Programmierung. ___ answer11312912 ___

Für Tabelle-für-Hierarchie enthält eine einzelne Tabelle alle Spalten für alle Typen. Du hast zwei Tische, also bin ich sofort misstrauisch.

Wenn Sie sich für Tabelle-pro-Typ entscheiden, ist es auch nicht richtig. Sie könnten nur zwei Typen haben, Basis und abgeleitet, wobei die PersonCategory-Tabelle die Daten für die Eigenschaftswerte des abgeleiteten Typs liefert. Aber das müsste die PersonID als Fremdschlüssel haben, was nicht der Fall ist.

Ich persönlich denke, dass Sie Ihre Entitäten unnötig in verschiedene Typen zerlegen. Sie könnten alle Spalten aus beiden Tabellen einer Entität zuordnen oder, wenn möglich, das Datenbankschema besser an Ihre Anforderungen anpassen.

Ich würde vorschlagen, mit einer leeren Testdatenbank zu arbeiten und TPT- und TPH-Model-First-Designs zu erstellen und sich das Schema anzuschauen, das EF für Ihr gewünschtes Setup erstellt.

Lukas

    
___ qstntxt ___

Ich versuche die Vererbungszuordnungen in EF4 zu verstehen.

Meine Datenbank hat zwei Tabellen mit der folgenden Struktur:

PersonCategory-Tabelle:

  • CategoryID (int) (Identität) (PK)
  • CategoryType (nvarchar (50))

Personentabelle

  • PersonID (int) (Identität) (PK)
  • CategoryID (FK aus der PersonCategory-Tabelle)
  • Name (nvarchar (50))
  • Beschreibung (nvarchar (max))

PersonCategory-Tabelle hat vier Einträge, die jeweils eine Kategorie darstellen - Student, CourseInstructor, Staff und Advisor.

Aus dem Lesen Artikeln online dachte ich Tabelle pro Hierarchie ist ein geeignetes Modell für dieses Szenario. In EF4 habe ich also vier Entitäten (Student, CourseInstructor, Staff und Advisor) erstellt, die jeweils von der Person-Tabelle übernommen wurden. Ich habe dann jeden von ihnen der Tabelle Person zugeordnet und eine Bedingung hinzugefügt (z. B. CategoryID = 1 für die Entität Student und CategoryID = 2 für die Entität Staff), um sie von anderen zu unterscheiden. Ich habe auch die CategoryID-Eigenschaft aus der Person-Tabelle entfernt und sie zur abstrakten Klasse gemacht. Aber ich erhalte den folgenden Fehler, weil ich die CategoryId-Eigenschaft aus Person-Tabelle gelöscht habe.

  

Fehler 3015: Problem bei der Zuordnung von Fragmenten ab Zeile 101, 108, 114, 120, 126, 133: Fremdschlüsselabhängigkeit 'FK_Person_PersonCategory' von Tabelle Person (CategoryID) bis Tabelle PersonCategory (CategoryID) :: Unzureichende Zuordnung: Fremdschlüssel muss einem AssociationSet oder EntitySets zugeordnet werden, die konzeptionell an einer Fremdschlüsselzuordnung teilnehmen.

Ist die Tabelle pro Hierarchie ein geeignetes Modell für dieses Szenario? Wenn nicht, wie sollte ich dieses Szenario in EF4 angehen?

    
___ answer4147970 ___

Die Verwendung von Diskriminatorspalten in Assoziationen ist problematisch. Siehe: -

Ссылка

"Der entscheidende Punkt ist, dass eine Spalte, die als Diskriminator fungiert, nur dann einer Assoziation zugeordnet werden kann, wenn sie in einer Nicht-Null-Bedingung enthalten ist."

    
___ tag123entityframework4 ___ Ein Tag für ADO.NET Entity Framework 4.x, selbst eine objektrelationale Zuordnung für das .NET-Framework. ___ tag123hierarchy ___ Bei Problemen beim Erstellen, Verwalten oder Anzeigen einer Hierarchie von Daten oder Ressourcen usw. ___ tag123Tabellenhierarchie ___ Eine Technik, die eine Vererbungshierarchie von Objekten einer einzelnen Tabelle in einer relationalen Datenbank zuordnet. ___ answer4201043 ___

Ich denke, was Sie wirklich wollen, ist Tabelle pro Typ Ссылка

    
___
3
Antworten

Entity Framework 4 - Vererbung

Ich versuche die Vererbungszuordnungen in EF4 zu verstehen. Meine Datenbank hat zwei Tabellen mit der folgenden Struktur: PersonCategory-Tabelle: CategoryID (int) (Identität) (PK) CategoryType (nvarchar (50)) Personentabelle...
10.11.2010, 18:26