Подтвердить что ты не робот

Ограничение Критерии NHibernate и Выражение

Если я ищу примеры API-запросов NHibernate Criteria в Интернете, есть примеры, которые используют Ограничения, а другие используют выражение. Каковы различия между этими двумя?

Например:

posts = session.CreateCriteria<Post>()
    .Add(Expression.Eq("Id", 1))
    .List<Post>();

posts = session.CreateCriteria<Post>()
    .Add(Restrictions.Eq("Id", 1))
    .List<Post>();
4b9b3361

Ответ 1

Я думаю, что ограничения были выпущены в NH2 и теперь предпочтительнее.

В соответствии с Resharper всякий раз, когда я использую выражение, я получаю подсказку, чтобы сказать Access to a static member of a type via a derived type

Также в соответствии с этим сообщением от Ayende: -

Предпочитают вместо этого использовать ограничения класса Expression для определения Запросы критериев.

Ответ 2

В исходном коде для namespace NHibernate.Criterion.Expression говорится, что "этот класс является устаревшим ограничением использования"

Ответ 3

Выражение наследуется от ограничений, но рекомендуется использовать ограничения. Выражение явно не рекомендуется.

Согласно Ayende (старое сообщение о NH 2.0), документация обычно относится к ограничениям.