NHibernate обрабатывает несколько запросов Delete и SaveOrUpdate

У меня есть .net core API, который использует NHibernate, сеанс для каждого запроса, когда сеанс запуска запроса открыт в конце сеанса запроса, фиксируется в транзакции.

Одна из таблиц используется в качестве кэш-таблицы, поэтому в некоторых случаях строки следует удалять.

Один случай — когда получение данных из другого API приводит к пересечению результатов с данными в таблице, чтобы взять самые новые строки в соответствии с полем даты обновления, каждая старая строка удаляется как часть этого процесса. Другим случаем является фоновая служба, которая получает события, чтобы указать, что запись устарела и ее необходимо удалить.

Проблема в том, что в то же время при удалении старых строк другой запрос может фактически обновить эту строку новыми значениями.

Проклятие, что этот сценарий вызывает исключение:

      NHibernate.StaleObjectStateException: 'Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)

Каков наилучший способ решить эту ситуацию и обнаружить, что строка была удалена до SaveOrUpdate из другого запроса в то же время?

Спасибо

0 ответов

Другие вопросы по тегам