.net - 是否可以使用 ICriteria 从 NHibernate 查询中获取惰性 IEnumerable?

标签 .net nhibernate .net-3.5

我正在使用 NHibernate,需要检索和处理多达 200 万行。理想情况下,我可以处理每一行 - 一次一行 - 无需 NHibernate 一次加载所有 200 万个内存(因为,你知道,这很痛苦)。

我更喜欢获得一个 IEnumerable,它会为每次读取迭代调用数据读取器,以便我可以处理读取的数据 - 然后丢弃它。通过这样做,我节省了大量内存,并开始更快地处理结果。我还可以通过多线程和/或使用 PLinq 来提高性能。

NHibernate 的 ICriteria 可以做到这一点吗?它返回的所有内容似乎都是 IList,并且在传递集合引用之前已完全加载。为什么是 IList 而不是 IEnumerable?!

我不是指 NHibernate 在加载子对象或父对象时使用的传统意义上的“懒惰”。我想要一个 惰性 IEnumerable 意味着从 ICriteria 对象中获取 IEnumerable . ICriteria 只有一个 List() 方法,它将结果加载到一个 ArrayList 中。

最佳答案

ICriteria 没有任何返回 IEnumerable 的方法,但是 IQuery does .

关于.net - 是否可以使用 ICriteria 从 NHibernate 查询中获取惰性 IEnumerable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/362911/

相关文章:

.net - Mono 在 Linux 中哪里安装 X509 证书?

database - Linq to Sql - 多个 .DBML 文件或一个 .DBML 文件

NHibernate CreateSQLQuery 事务问题

nhibernate - 在 NHibernate 中获取 *不是* 引用的延迟加载属性

linq - Linq to NHibernate 是否不再活跃?

c# - 编译器错误 "Default parameter specifiers are not permitted"

c# - 用户控件中有很多开销吗?

c# - WPF DataGrid 左上角选择所有标题按钮不聚焦网格

.net - 无法通过 StackExchange.Redis 重新连接到 Azure Redis

.net - 如何从 MDIChild 表单内部正确显示对话框()?