2011-03-28 35 views

回答

11

可以unproxy类与此代码

session.PersistenceContext.Unproxy(proxiedInstance) 
+9

有没有办法解决所有关联?它不引发我的主要对象,但它与其他对象的关系保持代理。 – ryudice 2011-03-28 20:43:55

0

我正在使用AutoMapper在实体框架中实现类似的功能。

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

如果你没有导航属性,这将工作。否则,您需要配置一个映射来忽略这些属性。

注意:这显然是一个低效率的解决方案。

+2

这不起作用。代理不包含继承的(真实)类的属性,所以它在映射类型中也会丢失。 – 2011-03-28 08:12:03

2

你应该在你的映射定义此,通过定义为lazy =“假”

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

您可以使用以下代码获取实物

InstanceType instance; 
if (proxiedInstance is INHibernateProxy) 
{ 
var lazyInitialiser = ((INHibernateProxy)proxiedInstance).HibernateLazyInitializer; 
instance = (InstanceType)lazyInitialiser.GetImplementation(); 
} 
相关问题