Un saludo gente del foro
Trabajando con asociaciones me surgió un duda y es que tengo dos entidades
Equipo y la de Nota.
En mi repository den Equipo tengo en el metodo GetById
public Equipo GetById(Int32? id)
{
using (var session = GetSession())
{
var equipo = session.Get<Equipo>(id);
return equipo;
}
}
la forma en que lo utilizo es
public static void RecuperarEquipo()
{
var aRep = new EquipoRepository();
var equipo = aRep.GetById(6);
equipo .Descripcion = "Ya cambie2";
if (equipo.Notas.Count == 0)
{
System.Console.WriteLine("Sin Notas");
}
equipo.Save(thard);
}
Al recuperar equipo es necesario que yo le agregue que inialize
mi colección de notas ya que si no devuelve el error de que
Initializing[MyHardware.Model.Entities.Equipo#6]-failed to lazily initialize
a collection of role: MyHardware.Model.Entities.Equipo.Notas, no session or
session was closed
Una primera idea para resolver este comportamiento fue agregarle al metodo
get una dictionary switch para indicarle si debe o no cargar
cierta asociación
public Equipo GetById(Int32? id, Dictionary<string, bool>
swLoadLazy)
{
using (var session = GetSession())
{
var thar = session.Get<Equipo>(id);
if ( swLoadLazy != null )
{
if (swLoadLazy["colNotas"] == true)
{
NHibernateUtil.Initialize(thar.Notas);
}
return thar;
}
}
}
ahora al recuperar la entidad hago lo siguiente
public static void RecuperarEquipo()
{
var aRep = new EquipoRepository();
var diccionario = new Dictionary<String, Boolean> {{"colNotas",
true}};
var thard = aRep.GetById(6, diccionario);
thard.Descripcion = "Ya cambie2";
if (thard.Notas.Count == 0)
{
System.Console.WriteLine("Sin Notas");
}
aRep.Save(thard);
}
Mi pregunta en su experiencia como debería manejar la interacciones con
coleccion de entidades?
Nota:
Se que puedo ponerle en el mapping lazy = "false" pero me parece que este
comportamiento es fundamental para el performance.
Hasta pronto. Si puedan dejen una comentario
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano