9

我正在使用 NHibernate(2.0.1.4) 和 NHibernate.Linq(1.0.0.4) 从数据库中获取类型节点的对象。

当我得到这些对象时,我得到的集合的最后一个对象是 Proxy 类型的(因为我使用了 "NHibernate.ByteCode.LinFu"" )

我使用了以下 linq 查询:

var mynodes = from node in session.Linq<Node>() where ancestorNodes.Contains(node.Id) select node).ToList()

anchestorNodes 是要获取的节点对象的 Id 列表。

当我在“ancestorNodes”列表中有 3 个 id 时,我从查询中获得的结果(mynodes)的最后一个对象是 nodeProxy 类型。

这怎么可能?为什么它总是最后一个对象?我怎么解决这个问题?

4

1 回答 1

17

如果您的 Proxy 对象实现了 INhibernateProxy,您可以使用 NHibernate 使用以下代码取消代理该对象:

iAmaSession.GetSessionImplementation().PersistenceContext.Unproxy(iAmaProxy)

希望这可以帮助!

于 2009-12-16T07:26:30.787 回答