gpt4 book ai didi

c# - (Fluent) Nhibernate 延迟加载并影响 Parallel.ForEach

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:46 24 4
gpt4 key购买 nike

我有几个实体通过 FNH 配置为在我请求实例(从数据库)时使用 FetchMode.Eager 语法预先加载子实体。现在我的印象是这会忽略映射中的任何延迟加载并使用“真实”数据填充子实体。

我之所以要这样做是因为我想使用 Parallel.ForEach 遍历实体集合并生成一组结果,但是我得到以下错误:

[18000] System.InvalidOperationException:
There is already an open DataReader associated with this Command
which must be closed first.

如果我使用“NHibernateUtil.Initialize”来初始化所有子实体,那么它会按预期工作。

我对 FetchMode.Eager 的使用理解有误吗?

最佳答案

我真的永远不会尝试那样做。每个 Parallel.ForEach 函数都可以在不同的线程上运行。根据您的配置,NHibernate ISession 是针对线程存储的,这意味着调用线程以外的任何东西都无法访问 session ,这就是整个事情失败的原因。

我个人会把整个东西检索到一个传输对象中,然后对其执行 Parallel.ForEach。

关于c# - (Fluent) Nhibernate 延迟加载并影响 Parallel.ForEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3425889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com