gpt4 book ai didi

nhibernate - 查询实体时如何强制 NHibernate 访问数据库?

转载 作者:行者123 更新时间:2023-12-05 00:06:59 24 4
gpt4 key购买 nike

我有一种情况,我需要 NHibernate 忽略它的缓存,因为数据已更改(另一台计算机上的另一个用户已更改数据)而只访问数据库。这怎么可能?到目前为止,我没有运气。 Get、Load、Linq 查询,无所谓。 NHibernate 没有获得最新的数据。

最佳答案

对于二级缓存,您必须使用 ISessionFactory.Evict(typeof(T)); 清除它。 .对于一级缓存,您可以简单地调用 ISession.Clear(); .

如果你不知道什么时候清除二级缓存,你应该从另一个应用程序向这个应用程序发送一些信息(通过套接字或网络服务......)。如果这是不可能的,您可以在数据库中创建一个表,告诉您上次修改数据库中的数据的时间,然后检查该表中的记录。如果它被修改,那么你清除缓存。只要确保每次其他应用程序更改数据库时记录都会更新(您可以使用触发器或检查系统表来做到这一点)。

如果您使用触发器,请不要忘记在使用 nhibernate 更新时忽略该记录。
您可以使用一些设置了最后更新时间的变量来执行此操作,并将其与该变量进行比较。

关于nhibernate - 查询实体时如何强制 NHibernate 访问数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526811/

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