que tengo x el que un objeto de tipo objectX que tiene una propiedad ListOfObjectYs eso es unEn nhibernate, no es capaz de lista de niño actualizar objetos
List<objectY>
el mapeo nhibernate se ve así:
public ObjectXMap()
{
HasMany(x => x.ListOfObjectYs).AsBag().Inverse();
}
cuando voy a guardarlo, puedo cambiar algunas propiedades de objectX y luego tener :
Session.SaveOrUpdate(x);
ahora necesito actualizar esta propiedad que es una lista. Obtengo una nueva lista de objectYs y quiero reemplazar la lista existente de objectY con una nueva lista. ¿Necesito hacer esto?
foreach (ObjectY y in x.ListOfObjectYs)
{
Session.Delete(y);
deleted = true;
}
if (deleted)
{
_session.Flush();
}
x.ListOfObjectYs.Clear();
foreach (ObjectY y in newObjectYList)
{
x.ListOfObjectYs.Add(y);
Session.SaveOrUpdate(y);
}
_session.Flush();
mis preguntas son:
- ¿Tengo que borrar todo y al ras antes de añadir otros nuevos.
- ¿Necesito hacer todo esto incrementales guarda en el medio
hay una mejor manera de hacer esta actualización en las que necesito para actualizar un objeto (propiedades), sino también actualizar las propiedades que son lista donde hay una lista completamente nueva (lo que significa que los elementos deben ser eliminados y agregados).
¿cómo puedes hacer eso sin realmente guardar los objetos Y? es su punto, esa cascada.AllDeleteOrphan() se ocupa de eso ?? – leora
ahora recibo un error: una colección con cascada = "todo-eliminar-huérfano" ya no era referenciada por la instancia de la entidad propietaria: ObjectY – leora
Si los objetos Y son nuevos, primero debe guardarlos para hacerlos persistentes. El mensaje de error puede indicar que está reasignando la referencia de la colección en algún lugar, consulte http://www.sleberknight.com/blog/sleberkn/entry/20070329 y http://stackoverflow.com/questions/2127016/nhibernate-mapping -a-collection-with-cascadeall-delete-orphan-was-no-longer-r. –