NHibernate Criteria限制与表达式

23
如果我在互联网上搜索NHibernate Criteria API查询示例,有些示例使用Restrictions,而其他示例使用Expression。这两者之间有什么区别?
例如:
posts = session.CreateCriteria<Post>()
    .Add(Expression.Eq("Id", 1))
    .List<Post>();

posts = session.CreateCriteria<Post>()
    .Add(Restrictions.Eq("Id", 1))
    .List<Post>();
3个回答

18

我认为在NH2中发布了限制条件,现在是首选的方法。

根据Resharper的提示,每当我使用Expression时,都会得到一个提示,提示说通过派生类型访问类型的静态成员

此外,根据Ayende的这篇文章

最好使用Restrictions而不是Expression类来定义Criteria查询。


14

namespace NHibernate.Criterion.Expression的源代码中写道:“这个类已经半废弃,请使用Restrictions”。


1

Expression 继承自 Restrictions,但建议使用 Restrictions。Expression 显然已经被弃用。

根据 Ayende(NH 2.0 的旧帖),文档通常会提到 Restrictions。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接