Fließendes NHibernate One-to-Many-Mapping
Ich habe die folgenden 2 Klassen:
Inserat
public virtual int Id { get; set;
public virtual IList<AdvertImage> AdvertImages { get; set; }
AdvertImage
public virtual int Id { get; set; }
public virtual string Filename { get; set;
public virtual Advert Advert { get; set; }
In der Datenbank hat meine AdvertImages-Tabelle die FK "AdvertId", die sich auf die Adverts-Tabelle bezieht, die die PK "Id" enthält.
Dies ist eine Eins-zu-Viele-Zuordnung, in der eine Anzeige viele Bilder enthalten kann.
Meine fließenden NHibernate-Zuordnungen (der Kürze halber bearbeitet) sind:
AdvertMap
Id(x => x.Id)
.GeneratedBy.Identity();
...
HasMany(x => x.AdvertImages)
.KeyColumn("AdvertId")
.Inverse();
...
Table("Adverts");
AdvertImageMap
Id(x => x.Id)
.GeneratedBy.Identity();
...
References(x => x.Advert)
.Column("AdvertId");
...
Table("AdvertImages");
Ich erstelle eine neue Instanz vonAdvert
im Code, dann füllen dieAdvertImages
Eigentum (von Anzeige) mit aList<AdvertImage>
.
Wenn ich geh um mein durchzuhaltenAdvert
Ich möchte, dass die AdvertImages in ihre AdvertImages-Tabelle eingefügt werden. Aufgrund der Beziehung zwischen den beiden Tabellen muss jedoch zuerst die Advert-Einfügung erfolgen, damit die PK-ID generiert und anschließend eingefügt werden kann in der Tabelle AdvertImages. (Wenn ich meine Liste von AdvertImage erstelle, fülle ich die Eigenschaft Filename mit Daten auf, habe aber offensichtlich zu diesem Zeitpunkt noch keine neue AdvertId. Sie soll also ausgefüllt werden, wenn die Anzeige in der Datenbank verbleibt.)
Ich habe versucht, mit verschiedenen Inverse () - und Cascade-Einstellungen zu experimentieren, war aber noch nicht erfolgreich. Kann jemand bitte helfen?