Nhibernate транзакция закоммичена, но записи в БД нет
От: vergilnexx  
Дата: 19.01.15 13:04
Оценка:
Иногда Nhibernate транзакция закоммичена, но записи в БД нет.

Выполняется следующий код:
[Transaction]
public int CreateTrade(Trade trade)
{
    //validate and fill properties of trade
    _tradeRepository.SaveOrUpdate(trade);

    return trade.Id;
}



После выхода из метода возвращается идентификатор, однако, в БД нет записи с таким идентификатором. В тоже время никаких exception'ов не было, иначе бы они отловились.
Если смотреть лог nhibernat'а, то видно, что транзакция успешно закоммичена.
Воспроизводится очень редко, но проблема очень болезненна.

P.S. используется Nhibernate v4.0.2, уровень изоляции: Snapshot.
nhibernate transactions c#
Re: Nhibernate транзакция закоммичена, но записи в БД нет
От: Clerk  
Дата: 19.01.15 13:32
Оценка:
Здравствуйте, vergilnexx, Вы писали:

V>Если смотреть лог nhibernat'а, то видно, что транзакция успешно закоммичена.

V>Воспроизводится очень редко, но проблема очень болезненна.
Может кто удаляет запись?
Re[2]: Nhibernate транзакция закоммичена, но записи в БД нет
От: vladpol Украина http://vlad-mislitel.livejournal.com/
Дата: 19.01.15 13:59
Оценка:
Здравствуйте, Clerk, Вы писали:

C>Здравствуйте, vergilnexx, Вы писали:


V>>Если смотреть лог nhibernat'а, то видно, что транзакция успешно закоммичена.

V>>Воспроизводится очень редко, но проблема очень болезненна.
C>Может кто удаляет запись?

Если id — автоинкремент, проверить id есть ли записи с id >= id, который вернул метод
Если база MSSQL — включить профилировщик и посмотреть какие команды приходят и что происходит
С уважением, Владислав Полищук
Re: Nhibernate транзакция закоммичена, но записи в БД нет
От: TK Лес кывт.рф
Дата: 19.01.15 17:34
Оценка: +1
Здравствуйте, vergilnexx, Вы писали:

V>После выхода из метода возвращается идентификатор, однако, в БД нет записи с таким идентификатором. В тоже время никаких exception'ов не было, иначе бы они отловились.

V>Если смотреть лог nhibernat'а, то видно, что транзакция успешно закоммичена.
V>Воспроизводится очень редко, но проблема очень болезненна.

Код у вас потенциально опасный. Если не сказано явно то, транзакция должна откатываться. Попробуйте переписать код с меньшим количеством "магии".
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.