Я использую триггеры в своей базе данных sql для сбора информации об изменениях для таблицы, однако, похоже, что проблема связана с nhibernate.
В таблице есть несколько столбцов, первичных ключей и триггеров.,Триггеры выглядят так:
CREATE TRIGGER [dbo].[tr_Instrument_update] ON [dbo].[Instrument] FOR UPDATE AS
BEGIN
INSERT [MyAudit].[audit].[Instrument]
SELECT 'Updated', i.*
FROM inserted
INNER JOIN [MyAudit].[dbo].[Instrument] i ON inserted.[InstrumentID] = i.[InstrumentID]
END
В основном при каждом изменении мы копируем строку в таблицу аудита.Я проверил, и если я изменяю данные напрямую через sql management studio, триггеры работают правильно, и я получаю данные, записанные в таблицу аудита, однако, если я обновляю через свое приложение, я получаю следующее:
NHibernate.Исключение StaleObjectStateException не было обработано кодом пользователя
Сообщение = строка была обновлена или удалена другой транзакцией (или сопоставление несохраненного значения было неверным)
Я предполагаю, что это происходит потому, что триггер обновляет другую таблицу в другой базе данных, есть ли способ заставить nhibernate игнорировать это, так как изменение не повлияет на какие-либо его данные, в наших отображениях мы не имеем ссылки на эти данные аудита.