我的 Object1 类型的对象包含 List Children1 属性。我很想在没有孩子的情况下得到这些物品。
似乎 detachedCriteria.SetFetchMode ("Children1", FetchMode.Lazy) 应该是事情,但显然不是:(我尝试使用 (new SessionScope()) 获取数据并将 null 设置为 .Children1 但它没有成功(数据已被提取)。
任何想法,将不胜感激。
我的 Object1 类型的对象包含 List Children1 属性。我很想在没有孩子的情况下得到这些物品。
似乎 detachedCriteria.SetFetchMode ("Children1", FetchMode.Lazy) 应该是事情,但显然不是:(我尝试使用 (new SessionScope()) 获取数据并将 null 设置为 .Children1 但它没有成功(数据已被提取)。
任何想法,将不胜感激。
当您映射集合时,您是否指定不使用延迟加载?此时尝试指定延迟加载。
在我看来,您正在使用一对一映射。在这种情况下,延迟加载将无法正常工作。如果是这样,请查看这篇文章。否则,请提供更多代码和映射。
使用 ICriteria API 检索实体时,您可以指定(覆盖)必须用于关联的 fetchmode:
ICriteria crit = session.CreateCriteria (typeof(MyEntity));
crit.SetFetchMode ("someAssociationPath", FetchMode.Lazy);
我们在当前的解决方案中遇到了同样的问题,并且在映射中设置 Lazy 不起作用。我们不得不将 default-lazy 设置为 true,然后它突然起作用了。
如果默认情况下所有关系都应该是惰性的,这将最有效。