我有一个服务对象负责一些业务逻辑验证.在对Update进行更新之前,它所做的是检查它所使用的实体是否符合某些业务规则.
其中一个必须检查的规则是,与数据库中的实体相比,实体的Status属性是否未更改.因为我使用共享同一个ISession的存储库,当我尝试从数据库中获取实体时,为了得到一个用于比较的对象:
if (fromDbEntity.Status != entity.Status) throw new Exception("Cannot change status...");
Run Code Online (Sandbox Code Playgroud)
我将永远从第一级缓存中的DbEntity获取- 所以我在同一个对象上工作.
有没有办法强制NHibernate/Repository从数据库中获取实体,即使它已经在会话范围内?
entity在加载之前从会话中逐出fromDbEntity
session.Evict(entity);
Run Code Online (Sandbox Code Playgroud)
您可以查看官方文档以获取更多详细信息:管理缓存
关于这一点的问题是,您需要手动调用SaveOrUpdate,entity因为此时对象已不在会话中.
| 归档时间: |
|
| 查看次数: |
3097 次 |
| 最近记录: |