23

インターネットでNHibernate Criteria APIクエリの例を検索すると、制限を使用する例と式を使用する例があります。これら2つの違いは何ですか?

例えば:

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によるこの投稿によると:-

Criteria クエリを定義するには、Expression クラスの代わりに Restrictions を使用することをお勧めします。

于 2011-03-30T08:03:21.027 に答える
14

のソースコードにnamespace NHibernate.Criterion.Expressionは、「このクラスは非推奨の使用制限です」と書かれています。

于 2011-03-30T10:45:50.743 に答える
1

式は制限から継承されますが、制限を使用することをお勧めします。式は明らかに非推奨です。

Ayende (NH 2.0 に関する古い投稿)によると、ドキュメントでは通常、制限事項が参照されます。

于 2011-03-30T08:02:38.740 に答える