Свободное отображение NHibernate один-ко-многим
У меня есть следующие 2 класса:
Advert
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; }
В БД моя таблица AdvertImages имеет FK "AdvertId". которая относится к таблице Adverts, которая имеет PK "Id".
Это отображение «один ко многим», в котором одно объявление может иметь много изображений.
Мои беглые отображения NHibernate (отредактированные для краткости):
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");
Я создаю новый экземплярAdvert
в коде, затем заполнениеAdvertImages
свойство (рекламы) сList<AdvertImage>
.
Когда я продолжаю настаиватьAdvert
Для объекта БД я бы хотел, чтобы AdvertImages был вставлен в их таблицу AdvertImages, но из-за связи между двумя таблицами мне нужно, чтобы вставка Advert выполнялась первой, так как генерируется PK Id, который затем можно вставить в таблице AdvertImages. (Когда я создаю свой список AdvertImage, я заполняю свойство Filename, но, очевидно, у меня нет нового AdvertId на этом этапе, поэтому я хочу, чтобы он заполнялся, когда реклама сохраняется в БД).
Я попытался поэкспериментировать с различными настройками Inverse () и Cascade, но пока не удалось. Может кто-нибудь помочь, пожалуйста?