Tengo una clase base abstracta y entidades poco heredadas. Estoy usando la tabla por herencia de subclase con la automatización fluida nhibernate 1.1.Problema con los proxies de Casting cuando se utiliza la tabla NHibernate por estrategia de herencia de subclase
La herencia de clases se parece a la siguiente
Nodo (clase abstracta) Lugar: Nodo Activos: Nodo clase Node
es básicamente una estructura de árbol.
public abstract class Node
{
public virtual int Id
{
get;
set;
}
public virtual Node ParentNode
{
get;
set;
}
public virtual ICollection<Node> ChildNodes
{
get;
set;
}
}
Ahora el problema es cuando consigo un objeto de la base de datos de activos y hacer objAsset.ParentNode, puedo echar a ParentNode activos o lugar, pero si lo hago algo así como objAsset.ParentNode.ParentNode.ParentNode, entonces el ParentNode aparece como del tipo "{Castle.Proxies.NodeProxy}" y no puedo convertirlo en Lugar o Activo.
Sé que en mi caso el resultado final debería ser de tipo Lugar, ya que el registro existe en la base de datos en la tabla Lugar pero por alguna razón NHibernate no puede cargarlo perezosamente al tipo derivado real, solo es moldeable al nodo de la clase base.
¿Alguna idea?
espera Nabeel
También, como se señala en el artículo; Una solución es desactivar la carga diferida en la asociación, que le dará el objeto real. – DanP
Ver solución agregada –
gracias deigo ... eso funciona muy bien. Lo único es que tuve que ignorar la propiedad Self en el mapeo. – nabeelfarid