0

nHibernate QueryOver を使用して、パフォーマンスの予測を強制したい場合、「選択」と「場所」は同じですか? つまり、意志..

        var member = session.QueryOver<Member>()
            .Select( projections => projections.Email == model.Email )
            .Take(1).SingleOrDefault();

と同じように実行します

        var member = session.QueryOver<Member>()
            .Where( context => context.Email == model.Email )
            .Take(1).SingleOrDefault();

それとも両者に違いはありますか?

4

2 に答える 2

1

Selectプロジェクト (マップとも言えます); Whereフィルター。これは、SQL およびすべての LINQ プロバイダーと同じです (また、QueryOver も一種の LINQ プロバイダーです)。この場合、プロジェクトではなくフィルタリングしたいようですので、必要ですWhere

于 2011-06-09T00:15:42.473 に答える
1

気分を害するつもりはありませんが、あなたが尋ねたような質問に答える最善の方法は、試してみることだと思います. 出力を見ると、物事がより明確になることがあります。

つまり、 を使用するとSelect、NHibernate にデータの射影方法を伝えることになります。これにより、クエリの結果として得られるデータの最終的な構成が決まります。これにはもう少し続きがありますが、それが一般的な考え方です。Whereクエリ対象のデータが満たす必要がある基準を指定する場合に使用します。

于 2011-06-09T00:49:29.427 に答える