мы недавно наткнулись на поведение NHibernate, которое доставило нам настоящую головную боль;).
Давайте рассмотрим следующий пример:
declare x
open transaction
create and persist object x
commit transaction
change object x
open other transaction
do nothing
close transaction
Удивило нас то, что изменения, внесенные в 'x' за пределами второй транзакции, в которой была зафиксирована база данных (хотя такое поведение имеет смысл и для меня, после того, как я об этом подумал). В нашей архитектуре это является некоторой проблемой, поэтому мы привыкли к другому поведению в мире, из которого пришли;).
Теперь вопросы:
- Можно ли запретить изменения объектов вне транзакции с NHibernate (например, сгенерировать исключение)?
- Можно ли зафиксировать только те изменения, которые были фактически внесены в текущую транзакцию?
- Есть ли какая-то совершенно другая вещь, которую мы могли бы сделать для обеспечения того, чтобы изменения в постоянных объектах производились только в определенной области видимости (using-директива, класс, пространство имен и т. Д.)?
Спасибо за ваши мысли, BaSche