【发布时间】:2011-11-30 01:28:03
【问题描述】:
我正在使用 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();
}
}
非常感谢! 狮子座
【问题讨论】:
标签: nhibernate