23

如果我在 Internet 上搜索 NHibernate Criteria API 查询示例,则有些示例使用限制,而其他示例使用表达式。这两者有什么区别?

例如:

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

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

3 回答 3

18

我认为限制是在 NH2 中发布的,现在是最受欢迎的方式。

根据 Resharper 的说法,每当我使用 Expression 时,我都会得到提示说Access to a static member of a type via a derived type

同样根据Ayende 的这篇文章:-

更喜欢使用 Restrictions 而不是 Expression 类来定义 Criteria 查询。

于 2011-03-30T08:03:21.027 回答
14

在源代码中namespace NHibernate.Criterion.Expression说“此类是半弃用的使用限制”

于 2011-03-30T10:45:50.743 回答
1

表达式继承自 Restrictions,但建议使用 Restrictions。表达式显然已被弃用。

根据Ayende(关于 NH 2.0 的旧帖子),文档通常会参考限制。

于 2011-03-30T08:02:38.740 回答