我无法在我面前访问代码,所以我只是想知道是否有人可以帮我解决Session.Evict()。
假设我有一个带有子集合地址的Person对象。我从会话中填充Person对象并延迟加载Addresses集合。然后我调用Session.Evict(personObject)从会话中分离Person对象。我的问题是,如果我尝试访问Addresses集合它会返回null,还是会得到异常,因为NHibernate代理无法找到关联的会话?
答案 0 :(得分:19)
如果在驱逐实体之前导致延迟加载,则即使在驱逐之后也可以访问该集合。但是,如果您逐出实体然后尝试延迟加载子集合,您将获得异常。
答案 1 :(得分:6)
您将收到NHibernate.LazyInitializationException。
答案 2 :(得分:0)
我也没有代码在我面前,但是从内存中,你可能会遇到异常。
如果你有延迟加载和工作,NHibernate将尝试加载Addresses集合。它永远不应该返回一个不正确的值/集合,它只会在它无法加载所询问的内容时抱怨。