nhibernate - 我如何使用 nhibernate 动态地延迟/急切加载

标签 nhibernate

有没有办法在加载时动态设置两个实体之间的加载策略?

例如,如果我有一个 Parent 实体,它有一个 Child 实体列表,在某些情况下我可能想加载带有延迟加载子项的“Parent”实体并渴望加载其他人。

有没有办法做到这一点?映射似乎暗示了其中之一。

最佳答案

是的,建议的策略是默认您的实体使用延迟加载,然后当您想要预先加载它们时,您更改您的查询并指定您希望您的 child 预先加载。

至于如何实际实现预先加载,这取决于您使用的查询样式。 (即 Linq2NH、标准、HQL)

例如,对于 Linq2NH,我相信它是这样的:

session.Query<Parent>().Fetch(p => p.Child)...

使用 HQL

fetch

像这样:

from Parent as p left join fetch p.Child...

最后,使用 Criteria API,您可以执行如下操作:

var criteria = context.Session.CreateCriteria<Parent>();
criteria.SetFetchMode("Child", NHibernate.FetchMode.Eager);
....

关于nhibernate - 我如何使用 nhibernate 动态地延迟/急切加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984833/

相关文章:

c# - NHibernate 二级缓存与 NHibernate Linq Provider 1.0

.net - 单独项目中的 nHibernate 域模型和映射文件

asp.net-mvc - 在 MVC 应用程序中配置 NHibernate 二级缓存

c# - 如何在 linq-to-Nhibernate 中使用多个条件连接

c# - QueryOver 集合包含所有值

unit-testing - 单元测试数据模型 : related entities

c# - NHibernate ReadWriteCache、版本控制和父/子映射

c# - 覆盖长文本字符串的流利 NHibernate nvarchar(MAX) 而不是 nvarchar(255)

c# - 执行多条件时出错,未知列 - Mono + NHibernate + MySQL

c# - 单向关联是否通过 NHibernate 导致非必需的外键字段