Płynne mapowanie NHibernate One-to-Many

Mam następujące 2 klasy:

Ogłoszenie

public virtual int Id { get; set;
public virtual IList<AdvertImage> AdvertImages { get; set; }

Obraz ogłoszenia

public virtual int Id { get; set; }
public virtual string Filename { get; set;
public virtual Advert Advert { get; set; }

W DB moja tabela AdvertImages ma FK „AdvertId”, który odnosi się do tabeli ogłoszeń, która ma PK „Id”.

Jest to mapowanie One-to-Many, w którym jedna reklama może zawierać wiele obrazów.

Mapowania My Fluent NHibernate (edytowane dla zwięzłości) to:

Mapa reklam

Id(x => x.Id)
  .GeneratedBy.Identity();
...
HasMany(x => x.AdvertImages)
  .KeyColumn("AdvertId")
  .Inverse();
...
Table("Adverts");

ReklamaImageMap

Id(x => x.Id)
  .GeneratedBy.Identity();
...
References(x => x.Advert)
  .Column("AdvertId");
...
Table("AdvertImages");

Tworzę nową instancjęAdvert w kodzie, a następnie wypełniającAdvertImages właściwość (ogłoszenia) za pomocąList<AdvertImage>.

Kiedy udaję się utrzymać mojeAdvert sprzeciwiam się DB, chciałbym, aby Obrazki Reklamowe były wstawiane do ich tabeli AdvertImages, ale ze względu na relacje między dwiema tabelami, potrzebuję wstawienia ogłoszenia najpierw, aby wygenerować PK PK, który można następnie wstawić w tabeli AdvertImages. (Kiedy tworzę moją listę AdvertImage, zapełniam właściwość Filename, ale oczywiście nie mam nowego AdvertId na tym etapie, więc chcę, aby zostało wypełnione, gdy reklama jest utrwalona w DB).

Próbowałem eksperymentować z różnymi ustawieniami Inverse () i Cascade, ale jeszcze się nie udało. Czy ktoś może pomóc?

questionAnswers(3)

yourAnswerToTheQuestion