Я использую NHibernate для обработки уровня доступа к данным. После внесения изменений в сущность и перед вызовом ISession.Update (entity) я хотел бы получить копию сущности из базы данных напрямую, а затем сохранить ее в таблице аудита для отслеживания истории. Но проблема в том, что сущность кешируется NHibernate. Похоже, что нет способа заставить NHibernate сделать прямой вызов в базу данных, если объект был кэширован?
Я знаю, что могу сделать копию, прежде чем вносить какие-либо изменения в сущность. Мне просто интересно, можно ли заставить NHibernate ударить базу данных в обход кэша? Или как лучше отслеживать историю?
Вот мой метод обновления EntityRepository:
public void Update(BusinessObject Entity) {
//I would like to get the existing data from database directly.
//It doesn't work as the entity is cached
BusinessObject OldEntity = GetById(Entity.Id);
using (ITransaction trx = session.BeginTransaction()) {
session.Update(Entity);
//Add to history tracking table
History.Add(OldEntity, Entity, "Update");
trx.Commit();
}
}
Очень ценится!
Leo