Я пишу приложение, и, наконец, оно правильно сохраняется в базе данных. Однако у меня было несколько проблем, и я бродил, если кто-то может помочь мне направить меня в правильном направлении.
Во время загрузки приложения я запускаю поток инициализации NHibernate, который инициализирует NHibernate, а затем запускает 3 отдельных потока, чтобы загрузить 3 моих объекта, чтобы разделить и оптимизировать время загрузки.
Первоначально я создавал временный сеанс в каждом из этих потоков, чтобы запрашивать объекты из базы данных; Однако я столкнулся с проблемами при доступе к одной из коллекций моего объекта, говоря, что сессия не открыта или была закрыта. У меня есть статический сеанс, который доступен во всем моем приложении Windows, и когда он вызывал GetEnumerator для коллекции, состояние этого сеанса все еще было открыто.
Я полагаю, что это связано с тем, что Intersection, рассматриваемый класс, был загружен из другого сеанса в потоке во время процесса инициализации. Загрузка всех объектов из одной сессии работает нормально; однако время от времени я сталкиваюсь с исключениями из-за ошибок, связанных с использованием сессий без использования потоков.
Тогда у меня такой вопрос. Есть ли способ "слить" сессии в мою глобальную сессию? Что я могу сделать, чтобы установить для класса Intersection открытый сеанс для загрузки коллекции? Является ли проблема, что мне нужно, чтобы открыть сеанс статической глобальной программы сеанса в главном потоке? Или я не смогу организовать загрузку трех разных классов в процессе инициализации в три отдельных потока?