Wie erstellen Sie eine HasMany-Beziehung auf einer Legacy-Datenbank, die keinen Fremdschlüssel und Spalten anders benannt hat? Ich weiß, wie man eine One-to-One-Beziehung auf HeaderVersion mit Referenzen erstellt, aber nicht wissen, wie man HasMany von Header 1 zu * HeaderVersion erstellen. Joinbedingung sollte sein:Fließend NHibernate - HasMany auf zusammengesetzten Schlüssel
Header.Id1 = HeaderVersion.PId1 AND Header.Id2 = HeaderVersion.PId2
Model http://i41.tinypic.com/30xbfo5.png
Domain:
public class Header {
public virtual int Id1 { get; set; }
public virtual int Id2 { get; set; }
public virtual string Something { get; set; }
}
public class HeaderVersion {
public virtual int PId1 { get; set; }
public virtual int PId2 { get; set; }
public virtual int Version { get; set; }
public virtual string SomethingFoo { get; set; }
}
Karte:
public HeaderMap() {
Table("Header");
LazyLoad();
CompositeId().KeyProperty(x => x.Id1, "Id1")
.KeyProperty(x => x.Id2, "Id2");
Map(x => x.Something).Column("Something");
}
public HeaderVersionMap() {
Table("HeaderVersion");
LazyLoad();
CompositeId().KeyProperty(x => x.PId1, "PId1")
.KeyProperty(x => x.PId2, "PId2")
.KeyProperty(x => x.Version, "Version");
Map(x => x.SomethingFoo).Column("SomethingFoo");
}
I HasMany Beziehung erstellt wie Sie gesagt haben, bevor (ohne AsBag), aber das Problem war, dass ich nicht GetHashCode habe außer Kraft setzen und Equals). Nach der Implementierung funktioniert es wie erwartet. Vielen Dank. – redman