3

根拠:

HQL および NH 基準は NHibernate 固有の構造であり、サーバー側の DAL 実装の詳細です。それらがクライアント側に「漏れる」ことは望ましくありません。したがって、クライアント側は、サーバーが処理する LINQ 式を提供します。

私には正当に思えますが、そうでないと考える人もいるので、その理由を知りたいです。

ありがとう。

4

1 に答える 1

3

クライアント側から式を受け入れる (またはクライアント側に公開IQueryable<>する) ことに対する議論は、フィルタリングや結合などの非クライアント ロジックが「間違った」場所で発生することを許可することです。クライアントが間違ったデータを公開している場合は、クライアント側のロジックと DAL の背後にあるロジックの 2 つの場所をチェックする必要があります。本質的に、それはあなたの懸念を分離しないことをあまりにも簡単にします.

とはいえ、これらの手法を慎重かつ慎重に使用することで、アプリケーションを改善できる場合もあります。たとえば、 を使用するIQueryable<>と、結果セットではなくサーバーによって効率的に実行されるクライアント側の並べ替えとパーティショニング (スキップ/テイク) をサポートできます。反論は、DAL でソートとパーティションのパラメーターを指定するだけでよいというものです。

最終的には、アプリケーションにとって意味のあるものを使用してください。ロープを使いすぎてぶら下がっていることに気付いた場合は、後でいつでもリファクタリングできます。

于 2009-08-27T12:53:40.500 に答える