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 из другого запроса в то же время?
Спасибо