NHibernate Session.Evict()

我无法在我面前访问代码,所以我只是想知道是否有人可以帮我解决Session.Evict()问题。

假设我有一个带有子集合地址的Person对象。 我从会话中填充Person对象并延迟加载Addresses集合。 然后我调用Session.Evict(personObject)从会话中分离Person对象。 我的问题是,如果我尝试访问Addresses集合,它只会返回null,或者我会得到一个exception,因为NHibernate代理无法找到关联的会话?

如果在驱逐实体之前导致延迟加载,则即使在驱逐之后也可以访问该集合。 但是,如果您逐出实体然后尝试延迟加载子集合,您将获得exception。

您将收到NHibernate.LazyInitializationException。

我也没有代码在我面前,但从内存来看,你可能会遇到exception。

如果你有延迟加载和工作,NHibernate将尝试加载Addresses集合。 它永远不应该返回一个不正确的值/集合,它只会在它无法加载所询问的内容时抱怨。