这是场景:
我有一个使用 NHibernate 的 winforms 应用程序。启动时,我使用 NHibernate 查询的结果填充 DataGridView。这部分工作正常。如果我更新该列表中的记录并刷新会话,则更新将进入数据库。在更新后关闭表单后,我调用一个方法来检索对象列表以再次填充 DataGridView 以获取更改并获取其他人可能发生的任何其他更改。问题是更新的记录,NHibernate 没有反映它给我的列表中的变化。当我插入或删除记录时,一切正常。只有当我更新时,我才会得到这种行为。我用他们的缓存机制把它缩小到NHibernate。我想不出一种方法来让 NHibernate 从数据库中检索而不是在更新发生后使用缓存。我在 NHibernate 论坛上发帖,但他们给我的建议没有用。我说了这个,没有人回复。我不会说明我尝试过的事情,以防我做得不对。如果您用我完全尝试过的东西来回答,我会在您回答的评论中说明。
这是我用来检索列表的代码:
public IList<WorkOrder> FindBy(string fromDate, string toDate)
{
IQuery query = _currentSession.CreateQuery("from WorkOrder wo where wo.Date >= ? and wo.Date <= ?");
query.SetParameter(0, fromDate);
query.SetParameter(1, toDate);
return query.List<WorkOrder>();
}
会话在构造时传递给类。我也可以发布我的映射文件,但我不确定它是否有任何问题,因为其他一切正常。有人见过这个吗?这是我使用 NHibernate 的第一个项目,感谢您的帮助。