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.
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.)
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% 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:
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
:
Tags und Links c# entity-framework