У меня есть несколько объектов отчета: BaseReport, ChildReport1, ChildReport2 и ChildReport3. Отчет может реализовывать интерфейс IComplexParameterSupport. ChildReport1,2 и 3 все наследуются от BaseReport..NET Parallel.ForEach, возможно, запутывает сеанс контекста NHibernate
Моя логика такова
- Открыть NHibernate контекст, используя SessionFactory
- Я использую рекурсии для создания дерева из типов отчетов, для создания своего рода меню. Это из иерархии родителя/ребенка - несколько раз вызывает базу данных, проверяя каждый раз тип отчета и выполняя определенные действия, связанные с определениями отчета.
- После этого я проверяю, является ли объект отчета IComplexParameterSupport.
В некоторых случаях, когда я знаю, что отчет реализует IComplexParameterSupport, когда я выполняю кастинг, объект отчета остается нулевым. Это похоже на то, что контекст NHibernate был потерян.
if(report as IComplexParameterisedSupport != null) { // logic here }
Это происходит только тогда, когда я уже использовать Parallel.ForEach, то есть на шаге 2. Я использую веб-приложения на .NET 4.0. У кого-нибудь есть аналогичные проблемы с параллелизмом и сеансами контекста NHibernate?