NHibernate .Query возвращает устаревшие данные - PullRequest
2 голосов
/ 22 октября 2010

Это мой юнит-тест (он довольно бессмысленный, но доказывает, что точка

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 Ответ

4 голосов
/ 22 октября 2010

Эта статья:

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

Предполагается, что запрос будет идти в базу данных, минуя кэш сеанса, тогда как Get сначала попытается сеанс.

...