У меня был метод с множеством вызовов постоянства, который использовал сеанс nHibernate, сработал, все в порядке. Но мне нужно было реорганизовать этот метод, извлекая метод из содержимого внутри цикла, по многопоточным причинам. Затем я создал класс с помощью этого метода. Это похоже на обычный рефакторинг, но сеанс nHibernate внутри этого вызова метода прерывается, без контекста я не завершал его в любой момент. Проблемы с nHibernate при многопоточности? Даже если у меня есть еще один поток, у меня такая же проблема.nHibernate session и многопоточность
Я использую сеанс nHibernate через шаблон SessionFactory и Façade, это означает, что сеанс не является полем этих объектов, он является глобальным в SessionFactory.
делает его немного более ясно:
ДО:
Method()
{
... persistence calls
foreach(Thing..)
{
...persistence calls for each thing (1)
}
...
}
ПОСЛЕ:
Method()
{
... persistence calls
foreach(Thing..)
{
create a thingResolver object with some data
open a new thread with thingResolver.Method (1)
starts this thread
}
.. waits for finishing threads and continues
}
Наша фабрика сеансов nHibernate поддерживается потоками и сохраняет/извлекает сеанс nHibernate для каждого потока. Он хорошо работает в настоящее время;)
спасибо Aleksey. У меня будут проблемы с этим (работа с другим сеансом), так как это нарушает мой дизайн, я думаю о том, чтобы сжечь эту многопоточную вещь. –
Фактически, моя фабрика сеансов является надежной и может выполнять сеанс на поток, его работа: D –
Обновленная ссылка на документацию http://nhforge.org/doc/nh/en/index.html#transactions – AlfeG