При выполнении обработчика NServiceBus, который использует NHibernate для своих операций доступа к данным, я вижу ошибку, в которой я не уверен, что мне нужно беспокоиться.
У обработчика есть код, который делает что-то вроде этого:
using (var tx = Session.BeginTransaction())
{
var accountGroup = _groupRepository.FindByID(message.GroupID);
accountGroup.CreateAccount(message.AccountNumber);
tx.Commit();
}
Когда я профилирую этот процесс, я вижу следующие строки:
- зачисленный сеанс в распределенной транзакции с уровнем изоляции: Сериализуемый
- начать транзакцию с уровнем изоляции: Unspecified
- SELECT ... FROM AccountGroups this_ ГДЕ this_.ID = 123
- ВСТАВИТЬ В СЧЕТЫ ...
- совершить транзакцию
- совершить транзакцию
Первое сообщение коммита генерируется моим кодом, когда я вызываю tx.Commit (). Второе сообщение коммита, я полагаю, происходит, когда мы покидаем метод Handle обработчика и вызывается NServiceBus. Этот второй вызов commit генерирует предупреждение в NHProf, которое гласит: «Использование одного сеанса в нескольких потоках, скорее всего, ошибка».
Не думаю, что это проблема, потому что в то время действительно нечего было совершать, но я делаю здесь что-то неуместное? Я хочу запустить свой код в транзакции, но когда я это делаю, я получаю это предупреждение.
Есть идеи?