NHibernate从数据库中获取旧值而不是新值

NHibernate从数据库中获取旧值而不是新值,nhibernate,Nhibernate,我在windows应用程序中使用Nhibernate。在运行时,我关闭表单,然后手动更改数据库中的数据,这样在打开表单后,它会显示旧值,而不是新输入的值。当我关闭所有程序(终止进程)并再次启动应用程序时,它会显示新的值 克里斯托弗已经提出了这个问题,但没有公认的答案 请引导我解决这个问题 谢谢您应该阅读一些解释NHibernate会话(一级缓存)如何工作的文本,否则您将在使用它时遇到大问题。对我来说,您似乎将会话保留的时间超过了需要的时间。我推荐下面这篇文章,它对于任何使用nhibernate创

我在windows应用程序中使用Nhibernate。在运行时,我关闭表单,然后手动更改数据库中的数据,这样在打开表单后,它会显示旧值,而不是新输入的值。当我关闭所有程序(终止进程)并再次启动应用程序时,它会显示新的值

克里斯托弗已经提出了这个问题,但没有公认的答案

请引导我解决这个问题


谢谢

您应该阅读一些解释NHibernate会话(一级缓存)如何工作的文本,否则您将在使用它时遇到大问题。

对我来说,您似乎将会话保留的时间超过了需要的时间。我推荐下面这篇文章,它对于任何使用nhibernate创建winforms应用程序的人来说都是必不可少的阅读资料


在windows应用程序上,您应该按演示者使用会话

这有一些很好的答案,可以为您提供解决方案

还有一个很好的谷歌短语是“每个演示者的会话”


NHibernate也有一个很好的例子(尽管你需要为此付费)

经过一些尝试和错误,我可以使用Session.Clear()方法来解决这个问题。你在应用程序的生命周期中使用单个ISession吗?@lan Nelson:是的,因为某种原因,我在应用程序的整个生命周期中使用单个ISession。