Mapeamento One-To-Many Fluent NHibernate
Eu tenho as seguintes 2 classes:
Anúncio
public virtual int Id { get; set;
public virtual IList<AdvertImage> AdvertImages { get; set; }
AnúncioImagem
public virtual int Id { get; set; }
public virtual string Filename { get; set;
public virtual Advert Advert { get; set; }
No DB, minha tabela AdvertImages tem o FK 'AdvertId', que se refere à tabela de anúncios que tem o PK de 'Id'.
Este é um mapeamento de um para muitos, em que um anúncio pode ter muitas imagens.
Meus mapeamentos Fluent NHibernate (editados por brevidade) são:
AdvertMap
Id(x => x.Id)
.GeneratedBy.Identity();
...
HasMany(x => x.AdvertImages)
.KeyColumn("AdvertId")
.Inverse();
...
Table("Adverts");
AdvertImageMapa
Id(x => x.Id)
.GeneratedBy.Identity();
...
References(x => x.Advert)
.Column("AdvertId");
...
Table("AdvertImages");
Estou criando uma nova instância deAdvert
no código, em seguida, preenchendo oAdvertImages
propriedade (de anúncio) com umList<AdvertImage>
.
Quando eu vou persistirAdvert
objeto para o DB, gostaria que o AdvertisImages fosse inserido em sua tabela AdvertisImages, mas devido ao relacionamento entre as 2 tabelas, eu preciso que a inserção do anúncio aconteça primeiro, assim como o PK Id é gerado, que pode ser inserido na tabela AdvertImages. (Quando eu crio minha lista de AdvertImage, estou preenchendo a propriedade Filename, mas obviamente não tenho o novo AdvertId nesse estágio, então quero que isso seja preenchido quando o anúncio for persistido no DB).
Eu tentei experimentar diferentes configurações Inverse () e Cascade, mas ainda não consegui. Alguém pode ajudar por favor?