nhibernate hasMany wenn keine Fremdschlüssel
-
05-07-2019 - |
Frage
Lassen Sie uns sagen, dass ich eine Anfrage Tisch haben, das sieht wie folgt aus:
RequestId INT
ReferenceNumber VARCHAR
Jede Anforderung wird in einem requestlog Tabelle protokolliert. Es ist keine Fremdschlüssel zwischen den Tabellen:
RequestLogId INT
ReferenceNumber VARCHAR
Content VARCHAR
Die requestlog enthält den Inhalt der Anforderung, und dieser Inhalt muss für einen bestimmten Zeitraum gespeichert werden. Die Anforderung kann gelöscht werden, aber das Protokoll kann erst nach einer gewissen Zeit gelöscht werden.
Wie kann ich meine Anfrage Objekt zuordnen, so dass es eine Liste von requestlogs, bezogen auf die Referenznummer enthalten?
Ich habe versucht, dies:
Table("InsuranceRequest");
Id(i => i.Id).Column("InsuranceRequestId");
Map(i => i.ReferenceNumber);
HasMany(i => i.InsuranceRequestLog).KeyColumn("RefenceNumber").LazyLoad.Cascade.None();
Es ist allerdings nicht funktionieren. Diese Zuordnung versucht, die Referenznummer an die RequestLogId von requestlog abzubilden. Gibt es eine Möglichkeit zu geben, dass die Joinspalte die insurancerequestlog Referenznummer sein sollte?
Lösung
nichts verhindern, dass das viele zu viele in der Tabellenstruktur .. Ich empfehle, die Struktur zu ändern und Fremdschlüssel zu machen, und ich bin sicher, dass die viele zu vielen Mapping werden für u arbeiten, wenn die Abbildung i nicht nach der Strukturänderung zu arbeiten.
Noch ein Tipp für u: nehmen einen leeren db und versuchen Schema aussetzen .. als u wird der Lage sein nhibernate denken sollte die Struktur aussehen
zu sehen, was