NHibernate .Query返回陈旧的数据

时间:2010-10-22 09:26:27

标签: c# nhibernate linq-to-nhibernate

这是我的单元测试(这是毫无意义的,但证明了一点

Config entity = new Config("key", "value");

Session.SaveOrUpdate(entity);

Config config = Session.Query<Config>().SingleOrDefault(c => c.Key == "key");
Assert.IsNotNull(config);

它失败了...但我认为不应该(注意,如果我冲洗它,它不会失败,但这不是我想要的行为)

如果我用这个

替换查询行
Config config = Session.Get<Config>("key");

......它通过了

它没有冲洗(我甚至将FlushMode设置为永远不会确定)。为什么一个人会成功,另一个人不会?这似乎不对 - 我非常希望linq成功

1 个答案:

答案 0 :(得分:4)

这篇文章:

http://ayende.com/Blog/archive/2009/04/30/nhibernate-ndash-the-difference-between-get-load-and-querying-by.aspx

似乎建议Query将绕过会话的缓存进入数据库,而Get将首先尝试会话。