我有几个报表对象如下:BaseReport、ChildReport1、ChildReport2 和 ChildReport3。报表可以实现 IComplexParameterSupport 接口(interface)。 ChildReport1,2 和 3 都继承自 BaseReport。
我的逻辑如下
在某些情况下,当我知道报表实现了 IComplexParameterSupport 时,当我进行强制转换时,报表对象保持为空。这就像 NHibernate 的上下文已经丢失了。
如果(报告为 IComplexParameterisedSupport != null)
{
//这里的逻辑
}
仅当我以前使用 Parallel.ForEach 时才会发生这种情况,即在 STEP 2 上。我在 .NET 4.0 上使用 Web 应用程序。是否有人对并行性和 NHibernate 上下文 session 有类似的问题?
最佳答案
这是否意味着 session 可以被多个线程同时访问?
如果是这样,这就是问题所在,因为 NHibernate 的 Session 不是线程安全的。
见 NHibernate thread safety with session
关于asp.net - .NET Parallel.ForEach 可能会弄乱 NHibernate 上下文 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051711/