我有几个报表对象如下:BaseReport、ChildReport1、ChildReport2 和 ChildReport3。报表可以实现 IComplexParameterSupport 接口。ChildReport1,2 和 3 都继承自 BaseReport。
我的逻辑如下
- 使用 SessionFactory 打开 NHibernate 上下文
- 我使用递归从报告类型生成树以生成一种菜单。这来自父/子层次结构 - 多次调用数据库,每次验证报告类型并执行与报告定义相关的特定操作。
- 然后,我会检查报告对象是否为 IComplexParameterSupport。
在某些情况下,当我知道报表实现了 IComplexParameterSupport 时,当我进行强制转换时,报表对象保持为空。这就像 NHibernate 的上下文已经丢失了。
如果(报告为 IComplexParameterisedSupport != null) { // 这里的逻辑 }
这只发生在我以前使用 Parallel.ForEach 时,即在 STEP 2 上。我在 .NET 4.0 上使用 Web 应用程序。是否有人对并行性和 NHibernate 上下文会话有类似的问题?