ho i seguenti 2 classi:Fluent NHibernate Uno-a-molti Mapping
Annuncio
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; }
Nel DB, mio tavolo AdvertImages ha il FK 'AdvertId' che si riferisce alla tabella degli annunci che ha il PK di 'Id'.
Questa è una mappatura uno a molti, in quanto un annuncio può avere molte immagini.
mappature mio Fluent NHibernate (a cura per brevità) sono:
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");
Sto creando una nuova istanza di Advert
nel codice, quindi popolando il prope AdvertImages
rty (di Advert) con un List<AdvertImage>
.
Quando vado a persistere l'oggetto Advert
nel DB, vorrei inserire AdvertImages nella loro tabella AdvertImages, ma a causa della relazione tra le 2 tabelle, ho bisogno che l'inserzione annuncio avvenga prima, quindi come viene generato l'ID PK, che può quindi essere inserito nella tabella AdvertImages. (Quando creo il mio elenco di AdvertImage, sto compilando la proprietà Filename, ma ovviamente non ho il nuovo AdvertId in quella fase, quindi voglio che venga popolato quando l'annuncio è persistente nel DB).
Ho provato a sperimentare con le diverse impostazioni Inverse() e Cascade ma non ci sono ancora riusciti. Qualcuno può aiutare, per favore?
Grazie a Cole W e un bel suggerimento sui metodi Aggiungi e Rimuovi. – marcusstarnes