ich die folgenden zwei Klassen haben:Fluent NHibernate One-To-Many Mapping
Anzeige
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 DB, Tabelle meine AdvertImages hat die FK "AdvertId", die sich auf die Adverts-Tabelle bezieht, die den PK von "Id" hat.
Dies ist eine Eins-zu-Viele-Zuordnung, bei der eine Anzeige viele Bilder enthalten kann.
Meine Fluent 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 bin eine neue Instanz von Advert
in Code erstellen, dann bevölkern die AdvertImages
prope rty (der Anzeige) mit einer List<AdvertImage>
.
Wenn ich gehe, um meine Advert
Objekt an die DB, möchte ich die AdvertImages in ihre AdvertImages Tabelle eingefügt werden, aber aufgrund der Beziehung zwischen den 2 Tabellen, ich brauche die Insertion Insertion zuerst passieren, so als Die PK-ID wird generiert, die dann in die AdvertImages-Tabelle eingefügt werden kann. (Wenn ich meine Liste von AdvertImage erstelle, beziehe ich die Dateiname-Eigenschaft, aber habe offensichtlich zu diesem Zeitpunkt noch nicht die neue AdverdiD, möchte also, dass die Datei gefüllt wird, wenn die Anzeige in der Datenbank beibehalten wird).
Ich habe versucht, mit verschiedenen Inverse() und Cascade-Einstellungen experimentieren, aber noch nicht gelungen. Kann mir bitte jemand helfen?
Danke Cole W, und netter Tipp die Methoden hinzufügen und entfernen. – marcusstarnes