Problem bei der Modellierung der Beziehung in Entity Framework mithilfe von Code zuerst

8

Ich versuche Code zuerst innerhalb des Entity Framework zu lernen und habe Probleme beim Modellieren einer Beziehung. Es ist eine Basis-HR-Datenbank, die aus diesem Grund zwei Entitäten, Mitarbeiter und Abteilungen hat.

Der Mitarbeiter gehört einer Abteilung an und die Abteilung hat einen Teamadministrator und einen Manager, die beide tatsächlich Angestellte sind. Ich habe versucht, dies mit dem folgenden Modell zu modellieren:

%Vor%

Offensichtlich möchte ich, dass die Abteilungs-Tabelle nur vier Spalten hat - Abteilungs-ID, Beschreibung, Manager-ID und Team-Administrator-ID, aber sie generiert zwei weitere für die Beziehung, nämlich Manager_EmployeeID und Team_Administrator_EmployeeID. Außerdem wird in der Employee-Tabelle die Spalte Department_DepartmentID generiert, um die DepartmentID zu speichern, anstatt die Abteilungs-ID-Spalte zu verwenden, die in der Entität angegeben wurde.

Was mache ich falsch? Wie muss ich die Felder und Beziehungen definieren, um zu vermeiden, dass Code zuerst ignoriert, was ich spezifiziere, und eigene Navigationsfelder in der Datenbank erzeugen?

    
MC76 12.06.2011, 12:43
quelle

2 Antworten

7

Da Ihre Modellkonfiguration unvollständig ist, haben Sie Ihr eigenes Mapping mit der Fluent-API gestartet, sodass Sie EF mitteilen müssen, dass diese Eigenschaften tatsächlich FKs für Relationen sind. Für Mitarbeiter verwenden:

%Vor%

Und für die Abteilung:

%Vor%

Übrigens. ohne Sammlung Navigationseigenschaften auf der gegenüberliegenden Seite der Beziehungen wird es schwierig sein, Modell zu verwenden (alle WithMany sind leer). Mindestens Department sollte haben:

%Vor%

Und das Mapping sollte wie folgt geändert werden:

%Vor%     
Ladislav Mrnka 12.06.2011, 13:37
quelle
0

Sehen Sie Ihre Mitarbeiterklasse

%Vor%

Um die Beziehung zwischen einem Mitarbeiter und einer Abteilung anzuzeigen, haben Sie ID und Abteilung verwendet. In der Realität müssen Sie das nur einmal tun - via Department . EF sucht standardmäßig nach der ID-Eigenschaft und verknüpft zwei Klassen für Sie. Ihre Klassen sollten also nur eine ID - ID der Klasse selbst enthalten. Versuchen Sie, IDs zu den anderen Klassen zu entfernen.

    
oleksii 12.06.2011 13:25
quelle