Вам известна только одна «версия» сущности: текущая. Там есть на самом деле только одна версия сущности. У вас есть это в памяти, вы уже изменили его и забыли предыдущее состояние.
Вызовите get, чтобы увидеть, что предыдущее состояние базы данных опасно. Если изменения уже сброшены (например, NHibernate сбрасывается перед запросами), вы получите ваши изменения. Если вы откроете другой сеанс, вы увидите изменения по сравнению с другими транзакциями.
Вас интересует только одно поле? Тогда вы можете где-то кешировать старое значение.
Если это не сработает, вам нужно больше рассказать мне о причине, по которой вам нужно знать предыдущее значение этого поля.
EDIT:
Еще несколько идей:
- кэширует предыдущее состояние поля при получении объекта, в DAO.Get
- реализовать это свойство, чтобы оно устанавливало флаг, если оно изменилось.
- рассмотрите возможность сделать это изменение явной операцией, вызываемой клиентом, вместо неявной операции, которая вызывается при изменении флага. Например, если этот флаг называется «Активирован», реализуйте методы «Активировать» и «Деактивировать». Эти методы изменяют этот флаг и выполняют «большой набор кода». Флаг доступен только для чтения для всего остального мира.