Q tal a todos, tengo un problema y realmente no sé cómo solucionarlo,
estoy utilizando CpBT en mi proyecto y tengo una estructura de árbol
de una tabla, la cuestión es que necesito armar toda la estructura y
mostrarla en pantalla eso lo consigo obteniendo de la tabla de la BD
todos los registros y armando en el servidor de aplicaciones toda la
jerarquía, la cuestión es que al finalizar de armar toda la estructura
y terminar el método me hace updates a todos los registros de la lista
q estoy devolviendo. Les coloco el código:
[PersistenceConversation(ConversationEndMode = EndMode.End)]
public IList<ModuloContenido> ObtenerArbol(int idModulo)
{
ICriteria criteria =
Sesion.CreateCriteria<ModuloContenido>();
criteria.Add(Expression.Eq("IdModulo", idModulo));
criteria.List<ModuloContenido>();
foreach (var contenido in lista.Where(nodo => nodo.Orden
== 0))
{
ArmarJerarquia(contenido, lista);
}
return lista.Where(nodo => nodo.Orden == 0).ToList();
}
private void ArmarJerarquia(ModuloContenido contenido,
IList<ModuloContenido> lista)
{
contenido.ColModuloContenidoHijos = lista.Where(nodo =>
nodo.IdPadre == contenido.IdModuloContenido).ToList();
if (contenido.ColModuloContenidoHijos.Count > 0)
{
foreach (var contenidoHijo in
contenido.ColModuloContenidoHijos)
{
ArmarJerarquia(contenidoHijo, lista);
}
}
}
Y este es el log de las transacciones realizadas al finalizar el
método "ObtenerArbol":
NHibernate: UPDATE [ModuloContenido] SET IdPadre = null WHERE IdPadre
= @p0;@p0 = 16
NHibernate: UPDATE [ModuloContenido] SET IdPadre = null WHERE IdPadre
= @p0;@p0 = 17
NHibernate: UPDATE [ModuloContenido] SET IdPadre = @p0 WHERE
IdModuloContenido = @p1;@p0 = 16, @p1 = 17
Qué es lo que estoy haciendo mal?
Gracias por adelantado por la ayuda.
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano