2011-03-28 9 views

Respuesta

11

Puede unproxy clase con este código

session.PersistenceContext.Unproxy(proxiedInstance) 
+9

¿Hay alguna manera de desprocesar todas las asociaciones también? Desproviza mi objeto principal pero sus relaciones con otros objetos se mantienen proxy. – ryudice

0

Estoy usando AutoMapper para lograr algo similar en Entity Framework.

var nonProxiedInstance = Mapper.DynamicMap<YourType>(proxiedInstance); 

Eso funcionaría si no tiene propiedades de navegación. De lo contrario, deberá configurar una asignación para ignorar esas propiedades.

Nota: Esta es (obviamente) una solución ineficiente.

+2

Esto no funciona. El proxy no contiene las propiedades de la clase heredada (real), por lo que también faltaría en el tipo mapeado. –

2

Debe definir esto en su asignación, mediante la definición de lazy = "false"

<class name="MyEntity" table="MyTable" lazy="false"> 
</class> 
0

Puedes usar el siguiente código para obtener el objeto real

InstanceType instance; 
if (proxiedInstance is INHibernateProxy) 
{ 
var lazyInitialiser = ((INHibernateProxy)proxiedInstance).HibernateLazyInitializer; 
instance = (InstanceType)lazyInitialiser.GetImplementation(); 
} 
Cuestiones relacionadas