Kann nicht NHibernate die richtige Abfrage generieren. Es verwendet weiterhin die Primärschlüssel der beiden Tabellen, die ich für die Eins-zu-eins-Beziehung einfüge, und ich kann nicht herausfinden, wie der Fremdschlüssel in einer der Tabellen angegeben wird.NHibernate Eins-zu-eins-Zuordnung, nicht primäre Schlüssel
Daher sollte die TabelleA mit tabellarB mit TableA.bID = tableB.bID verbinden. Wie kann ich dies im Mapping für TabelleA angeben? Ich verwende die tableA-Klasse, um eine Zeile aus tableA und eine Zeile aus tableB abzurufen, da es sich um eine echte Eins-zu-Eins-Beziehung handelt.
NHibernate generiert die SQL, um die Tabellen mithilfe von tableA.aID = tableB.bID zu verbinden, was falsch ist.
funktioniert das nicht:
<class name="tableA" table="tableA">
<id name="aID" column="aID" />
<property name="bID" column="bID" />
<property name="c" column="c" />
<property name="d" column="d" />
<one-to-one name="otherThing" class="tableB" foreign-key="bID" />
</class>
<class name="tableB" table="tableB">
<id name="bID" column="bID" />
<property name="z" column="z" />
<property name="y" column="y" />
<property name="x" column="x" />
</class>
Danke. Das hat funktioniert. Verwirrend, dass ich ein Many-to-One-Element verwenden muss, wenn es wirklich ein Eins-zu-eins-Mapping ist. Ich setze auch den Fetch-Typ auf "Join", um die Anzahl der Abfragen zu reduzieren. – MonkeyWrench
Aber ja, wenn Sie ein bidirektionales Beispiel zeigen können, wäre es lehrreich. – MonkeyWrench
Da gehen Sie ... –