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?