Nhibernate не возвращает правильный результат когда-нибудь - PullRequest
1 голос
/ 08 января 2010

Итак, вот мой запрос nhibernate. Я просто запрашиваю в базе данных, есть ли последняя запись по некоторому номеру, но с последней отметкой времени.

Так, если у меня есть

Row A   6     1/7/2010 2:55:59 PM
Row B   6     1/7/2010 2:56:33 PM

Итак, согласно запросу он должен вернуть строку B, но иногда этого не происходит. Может кто-нибудь указать на проблему в моем спящем запросе.

DetachedCriteria subquery = DetachedCriteria.For(typeof(x));
        subquery.SetProjection(Projections.Max("Time"));


        X x = (X)_mapper.Run(delegate(ISession session, object[] arguments)
        {
            ICriteria criteria = session.CreateCriteria(typeof(X));
            criteria.Add(Expression.Eq("ID", ID));
            criteria.Add(Subqueries.PropertyEq("Time", subquery));
            return criteria.UniqueResult();
        }, true);

        return x;

1 Ответ

1 голос
/ 09 января 2010

Ваш подзапрос не фильтруется по идентификатору, как фактический запрос - если максимальное время независимо от идентификатора окажется в строке с указанным идентификатором, вы получите нужную строку; если этого не произойдет, вы не будете. Вам нужно добавить фильтр, где вы создаете подзапрос:

.Add( Expression.Eq("ID", ID) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...