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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage