如果我在互联网上搜索NHibernate Criteria API查询示例,则会有使用限制的示例,而其他示例则使用Expression。这两者有什么不同?
例如:
posts = session.CreateCriteria<Post>()
.Add(Expression.Eq("Id", 1))
.List<Post>();
posts = session.CreateCriteria<Post>()
.Add(Restrictions.Eq("Id", 1))
.List<Post>();
答案 0 :(得分:18)
我认为限制在NH2中发布,现在是受欢迎的方式。
根据Resharper,每当我使用Expression时,我都会提示Access to a static member of a type via a derived type
Ayende也according to this post: -
更喜欢使用限制 用于定义的Expression类 标准查询。
答案 1 :(得分:14)
在namespace NHibernate.Criterion.Expression
的源代码中说“此类已被半弃用使用限制”
答案 2 :(得分:1)
表达式继承自Restrictions,但建议使用Restrictions。表达式显然已被弃用。
根据Ayende (old post about NH 2.0),文档通常会引用限制。