Запросы NHibernate linq на обновления не учитывают транзакцию фиксации ⇐ C#
Запросы NHibernate linq на обновления не учитывают транзакцию фиксации
Я хотел бы обновить объекты, используя запросы linq, предоставляемые NHibernate. Например (из официального документа)
session.Query() .Where(c => c.BodyWeight > 20) .UpdateBuilder() .Set(c => c.BodyWeight, c => c.BodyWeight/2) .Обновлять(); Я заметил, что этот оператор выполняет обновление сразу перед фиксацией транзакции.
Есть две проблемы.
Первое. Как правильно осуществляется откат?
Во-вторых. Представляю этот сценарий. Две сущности и существует ограничение на ключ. Первый ключ объекта имеет значение A1, второй ключ объекта имеет значение A2. При обновлении foreach таким способом возникает проблема. Первый ключ объекта модифицируется, принимая значение A2, второй ключ объекта изменяется, принимая значение A1. Обновление базы данных таким образом вызывает исключение ограничения, нарушенного при первом обновлении. Как я могу это решить? Может быть, пакетным способом?
Заранее спасибо
Я хотел бы обновить объекты, используя запросы linq, предоставляемые NHibernate. Например (из официального документа)
session.Query() .Where(c => c.BodyWeight > 20) .UpdateBuilder() .Set(c => c.BodyWeight, c => c.BodyWeight/2) .Обновлять(); Я заметил, что этот оператор выполняет обновление сразу перед фиксацией транзакции.
Есть две проблемы.
Первое. Как правильно осуществляется откат?
Во-вторых. Представляю этот сценарий. Две сущности и существует ограничение на ключ. Первый ключ объекта имеет значение A1, второй ключ объекта имеет значение A2. При обновлении foreach таким способом возникает проблема. Первый ключ объекта модифицируется, принимая значение A2, второй ключ объекта изменяется, принимая значение A1. Обновление базы данных таким образом вызывает исключение ограничения, нарушенного при первом обновлении. Как я могу это решить? Может быть, пакетным способом?
Заранее спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение