He los siguientes 2 clases:Fluido NHibernate Uno-A-Muchos Mapeo
anuncio
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; }
En el DB, mi mesa AdvertImages tiene el FK 'AdvertId' que se relaciona con la tabla Anuncios que tiene el PK de 'Id'.
Este es un mapeo Uno a Muchos, en el que un anuncio puede tener muchas imágenes.
asignaciones Mi Fluido NHibernate (editado por brevedad) son:
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");
estoy creando una nueva instancia de Advert
en el código, luego llenando el propo AdvertImages
rty (del anuncio) con un List<AdvertImage>
.
Cuando voy a persistir mi objetivo Advert
con el PP, me gustaría que los AdvertImages para ser insertado en su mesa AdvertImages, pero debido a la relación entre las 2 mesas, necesito la inserción del anuncio que suceda primero, a fin se genera el identificador PK, que luego se puede insertar en la tabla AdvertImages. (Cuando creo mi lista de AdvertImage, estoy rellenando la propiedad Filename, pero obviamente no tengo el nuevo AdvertId en esa etapa, así que quiero que se llene cuando el anuncio persista en la base de datos).
He intentado experimentar con diferentes configuraciones Inverse() y Cascade, pero todavía no lo he logrado. ¿Alguien puede ayudar, por favor?
Gracias Cole W, y buen consejo sobre los métodos Agregar y Eliminar. – marcusstarnes