根拠:
HQL および NH 基準は NHibernate 固有の構造であり、サーバー側の DAL 実装の詳細です。それらがクライアント側に「漏れる」ことは望ましくありません。したがって、クライアント側は、サーバーが処理する LINQ 式を提供します。
私には正当に思えますが、そうでないと考える人もいるので、その理由を知りたいです。
ありがとう。
根拠:
HQL および NH 基準は NHibernate 固有の構造であり、サーバー側の DAL 実装の詳細です。それらがクライアント側に「漏れる」ことは望ましくありません。したがって、クライアント側は、サーバーが処理する LINQ 式を提供します。
私には正当に思えますが、そうでないと考える人もいるので、その理由を知りたいです。
ありがとう。
クライアント側から式を受け入れる (またはクライアント側に公開IQueryable<>
する) ことに対する議論は、フィルタリングや結合などの非クライアント ロジックが「間違った」場所で発生することを許可することです。クライアントが間違ったデータを公開している場合は、クライアント側のロジックと DAL の背後にあるロジックの 2 つの場所をチェックする必要があります。本質的に、それはあなたの懸念を分離しないことをあまりにも簡単にします.
とはいえ、これらの手法を慎重かつ慎重に使用することで、アプリケーションを改善できる場合もあります。たとえば、 を使用するIQueryable<>
と、結果セットではなくサーバーによって効率的に実行されるクライアント側の並べ替えとパーティショニング (スキップ/テイク) をサポートできます。反論は、DAL でソートとパーティションのパラメーターを指定するだけでよいというものです。
最終的には、アプリケーションにとって意味のあるものを使用してください。ロープを使いすぎてぶら下がっていることに気付いた場合は、後でいつでもリファクタリングできます。