gpt4 book ai didi

nhibernate - 强制 NHibernate 获取已经处于持久状态/一级缓存的实体

转载 作者:行者123 更新时间:2023-12-03 12:05:37 26 4
gpt4 key购买 nike

我有一个负责某些业务逻辑验证的服务对象。在向存储库发送更新之前,它所做的是检查它所处理的实体是否符合某些业务规则。

必须检查的规则之一是,与数据库中的实体相比,实体的 状态 属性是否没有改变。因为我使用共享相同 ISession 的存储库,当我尝试从数据库中获取实体时,为了获取一个对象进行比较:

if (fromDbEntity.Status != entity.Status) throw new Exception("Cannot change status...");

我总是会从第一级缓存中的 DbEntity 获得 - 所以我在同一个对象上工作。

有没有办法强制 NHibernate/Repository 从数据库中获取实体,即使它已经在 session 的范围内?

最佳答案

在加载 entity 之前从 session 中驱逐 fromDbEntity

session.Evict(entity);

更多细节可以查看官方文档: Managing the caches

关于这一点的缺点是您需要为 SaveOrUpdate 手动调用 entity,因为现在对象不在 session 中。

关于nhibernate - 强制 NHibernate 获取已经处于持久状态/一级缓存的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11016356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com