有没有办法让nhibernate返回我的类而不是它的代理类?我不介意它是不是懒惰或不能更新。Nhibernate:获取真正的实体类而不是代理类
5
A
回答
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
您可以使用http://sessionfactory.blogspot.com/2010/08/hacking-lazy-loaded-inheritance.html描述的技术(你将需要递归执行)
0
您可以使用以下代码获取实物
InstanceType instance;
if (proxiedInstance is INHibernateProxy)
{
var lazyInitialiser = ((INHibernateProxy)proxiedInstance).HibernateLazyInitializer;
instance = (InstanceType)lazyInitialiser.GetImplementation();
}
相关问题
- 1. 获取Javassist类型而不是实际的Hibernate实体类型
- 2. NHibernate的包 - 真正的收集项目,而不是代理
- 3. 代理类与真实类WCF问题
- 4. 获取NSManagedObject父类的属性而不是实体
- 5. EF4 CTP4获取波科实体而不是代理对象
- 6. NHibernate的:获取具体类型引用的抽象实体的
- 7. 学说2获得代理类的真实类名称
- 8. 的NHibernate不会创建代理,除非类...懒=真
- 9. 为什么EF返回一个代理类而不是实际的实体?
- 10. 获取用于MethodInvocation而不是声明类的实际类
- 11. 如何获取类的实例而不是其子类?
- 12. 基础实体类。 NHibernate的
- 13. 真实的物体而不是画布
- 14. 在NHibernate中为新添加的实体获取代理
- 15. NHibernate和实体基类
- 16. 如何获得Doctrine 2返回实体而不是代理
- 17. 如何获取nhibernate DynamicProxy的代理类型的全名?
- 18. 实体类型和关系类型之间的真正区别?
- 19. Python代码而不是真实文件
- 20. 主义 - 我得到的实体类,而不是库类
- 21. 流利的NHibernate实体不同子类类型的HasMany集合
- 22. 获得“真实”类的泛型类型
- 23. NHibernate的集中退出按类型而不是按实例
- 24. JQuery获取ID或类,而不是值
- 25. 实现的,而不是类的实例
- 26. Nhibernate:一个实体类的多个classmaps
- 27. 如何获得可能是NHibernate代理对象的对象上的实体类型?
- 28. 春JPA“类不是实体”
- 29. StructureMap获取注册类型,而不是实例
- 30. 获取实体类的表名
重复 - 请参阅http://stackoverflow.com/questions/1867998/nhibernate-get-objects-without-proxy – mookid8000 2011-03-28 06:52:02