我在做winform开发的时候用到了nhibernate,当对数据库进行操作后,立刻查询却得不到最新的数据?
比如对数据库一条数据删除后,我还会查到这条数据,过一阵子再查,就查不到该条数据,也就是说我查到的数据不是最新的,请问这是怎么回事?谁能帮我解决下,谢谢!
能否具体点.
@milk9906: 由于一级、二级缓存中都不存在需要的数据,这时NHibernate从数据库中查询数据。我们修改这条数据并提交到数据库中,NHibernate执行一条更新语句,由于我们设置了读写缓存策略,NHibernate更新了二级缓存中的数据内容,第二次读取这条数据,NHibernate首先从内置缓存(一级缓存)中查找是否存在所需要数据,由于不是在同一个ISession中,所以内置ISession缓存中不存在所需数据,NHibernate则查询二级缓存,这时由于第一次查询了这条数据,所以在二级缓存中存在所需数据,则直接使用缓存中数据。这时缓存中的数据也是更新的。
@荒野的呼唤: 哦,我大概明白你的意思了,那我该怎么处理这种问题啊,比如多个客户端同时操作一张表,其中某条数据被删除了,怎么保证其他的客户端查询的时候能立刻知道该条数据被删除了,而不是又可以从缓存中读出,本人初学还望大虾不要嫌偶菜,给指点一下啊,目前这个问题很棘手,希望先解决。
@milk9906: 我给你的链接说得非常的清楚了。你仔细的看吧。一切都会明白的。