Таблица SQL Server Кажется заблокированной после вызова фиксации транзакции NHibernate - PullRequest
0 голосов
/ 25 января 2012

После завершения кода ниже все выглядит хорошо.Когда я захожу в SQL Manager и запрашиваю таблицу, она никогда не заканчивает чтение.Перед выполнением есть только одна строка в таблице, которая является удалением.

Код:

AgencyQueue aQueue = null;

        NHUnitOfWork workO = _agencyQueueRepository.UnitOfWork<NHUnitOfWork>();            

        aQueue = _agencyQueueRepository.First<AgencyQueue>(x => x.CertificateId == id);

        if (aQueue != null)
        {
           // _agencyQueueRepository.Delete(aQueue);
            workO.GetSession<AgencyQueue>().Delete(aQueue);
            workO.GetSession<AgencyQueue>().FlushMode = FlushMode.Always;
            //workO.GetSession<AgencyQueue>().Flush();

            using (var tx = workO.GetSession<AgencyQueue>().BeginTransaction())
            {

                tx.Commit();
                workO.GetSession<AgencyQueue>().Delete(aQueue);
                tx.Dispose();
            }

        }

        /*using (var scope = new UnitOfWorkScope())
        {
            aQueue = _agencyQueueRepository.First<AgencyQueue>(x => x.CertificateId == id);

            if (aQueue != null)
            {
                _agencyQueueRepository.Delete(aQueue);
                scope.Commit();

                //UnitOfWorkManager.CurrentTransactionManager.CurrentUnitOfWork.Flush();
                scope.Complete();
            }
        }*/

Код с комментариями представляет собой то, что мы обычно делаем для обработки персистентности домена, но этов настоящее время не работает, как это было.Вот почему я использую методы уровня сеанса.

Я довольно новичок в NHibernate, но после изучения многих проблем, с которыми мы столкнулись, оказалось, что мы не используем его, как многие другие.

Кто-нибудь еще видел эту проблему или знает, что я делаю не так?

...