EF Foreign Key unter Verwendung der Fluent-API

9

Hier sind meine Modelle. Ich habe Eins-zu-eins-Zuordnung für Fahrzeug und Fahrer. Ich werde das Fahrzeug zuerst erstellen lassen und dann den Fahrer dem Fahrzeug zuordnen.

%Vor%

Ich möchte die VehicleId-Eigenschaft in der Driver-Klasse verwenden, um die ID des Fahrzeugs zu behalten, das der Fahrer fährt.

Ich habe den folgenden Fluent-API-Code geschrieben:

%Vor%

Aber es erstellt eine neue Spalte in der Drivers-Tabelle - Vehicle_VehicleId und ordnet sie der VehicleId on Vehicle-Tabelle zu. Ich möchte die VehicleId der Driver-Tabelle zuordnen.

Außerdem bin ich brandneu bei EF und Fluent API. Ich finde es sehr verwirrend, zwischen WithRequiredDependent und WithRequiredPrincipal zu wählen. Wäre froh, wenn Sie es in einfachen Worten beschreiben können. Danke.

    
Ashish Charan 20.01.2014, 08:36
quelle

2 Antworten

19

Diese Zeile:

  

public int Fahrzeug-ID {get; einstellen; }

teilt EF, über Code-Konventionen mit, dass Sie einen Fremdschlüssel in% möchten co_de% zeigt auf Driver .

Dieser sagt EF, dass Sie eine 1: 1 Beziehung von Vehicle zu Driver wollen:

  

öffentliches virtuelles Fahrzeugfahrzeug {bekommen; einstellen; }

Sie sollten beide entfernen und bei Ihrer Fluent-API-Konfiguration bleiben.

In Bezug auf WithRequiredPrincipal im Vergleich zu WithRequiredDependent :

Sie geben eine obligatorische Beziehung zwischen Vehicle und Vehicle an, mit Navigation von Driver bis Vehicle , also: Fahrzeug 1 - & gt; 1 Driver

(Fahrzeug ist das Prinzipal und Driver das abhängige Objekt, da sich die Navigationseigenschaft in Driver befindet und auf Vehicle verweist.)

%Vor%

Sie geben eine obligatorische Beziehung zwischen Driver und Vehicle mit der Navigation von Driver bis Driver an, also: Vehicle 1 & lt; - 1 Vehicle

( Driver ist das abhängige und Vehicle das Prinzip, da sich die Navigationseigenschaft in Driver befindet, die auf Driver zeigt.)

Diese beiden sind analog:

%Vor%     
jnovo 20.01.2014, 08:55
quelle
3

EF erstellt die Spalte Vehicle_VehicleId , weil Sie VehicleId und Vehicle für Ihre Driver Entität haben.

Entfernen Sie VehicleId und Vehicle von Ihrer Driver Entität:

%Vor%

Verwenden:

%Vor%

Sie legen die Beziehung so fest, dass Sie keine manuellen Eigenschaften in Ihre Entitätsklassen aufnehmen müssen.

Sie erhalten das VehicleId von der Navigationseigenschaft Vehicle :

%Vor%     
Sam Leach 20.01.2014 08:45
quelle

Tags und Links