4

LINQ がどのレイヤーに分類されるべきか (そしてなぜ) について、さまざまなアイデアや視点を集めたかっただけですか?

4

9 に答える 9

5

LINQ = 言語統合クエリ。これは、データベースからリスト/コレクション、XML まで、あらゆるクエリを実行できるクエリ拡張機能です。クエリ言語は、どのレイヤーでも役立ちます。

ただし、多くの人は LINQ to SQL を単に "LINQ" と呼んでいます。そのコンテキストでは、L2S を使用していて、データベースに対して LINQ クエリを実行する場合は、結合された BLL/DAL が理にかなっています。それはもちろん、上位層の新しい (Linq to objects) クエリで同じクエリの結果に対して後続のクエリを実行することを排除するものではありません...

于 2008-10-06T15:52:35.407 に答える
4

それはあなたがlinqで何をしたいかによって異なります。linq2sql を使用する場合は DAL をお勧めしますが、Linq は単なるデータベース アクセスではありません。これを使用して、リストやビジネス オブジェクトの列挙可能オブジェクトなどを操作できます。Linq 自体は、アプリケーションのあらゆる場所で役立ちます。

于 2008-10-06T15:35:50.560 に答える
3

DataContextから派生したオブジェクトをDALレイヤー自体と見なしますが、LINQはそれに対する非常に柔軟なインターフェイスです。したがって、私はLINQクエリをビジネスレイヤーで直接使用します。

于 2008-10-06T15:41:39.783 に答える
1

両方。DataContextはDALであり、デザイナを使用する場合、SQLオブジェクト(テーブル、ビュー)にマップされる自動生成された部分クラスはビジネスレイヤーの一部と見なすことができます。必要に応じて検証とセキュリティを実施するために、いくつかの部分メソッドを実装する部分クラスを実装します。一部のビジネスルールはDBオブジェクトに直接マップされず、他のクラスを介して処理されます。

于 2008-10-06T15:45:46.530 に答える
1

Linq to Sql を実行している場合は、常に DAL で実行する必要があると思います。ただし、フィルタリングするだけのLinq to Objectsを実行している場合は、BLレイヤーである別のオブジェクトで遊ぶことができます。

于 2008-10-15T15:11:36.237 に答える
0

これはアプリケーションのアーキテクチャに依存し、プレゼンテーションモデルがデータモデルとどの程度一致するかによって大きな違いが生じます。LINQによって作成されたデータオブジェクトおよびアクセスメソッドからビジネスロジック操作を分離することに同意します。また、すべてのデータレベルの操作をマネージャークラス内にラップする傾向があるため、データコンテキストを内部クラスにすることができます。

于 2008-10-06T15:40:37.227 に答える
0

Linqのポイントは、DALに取って代わることだと思います。

古いDALに相当するのは、DBMLファイルの背後にあるすべての自動生成されたコードとLinqが追加できない余分なものです。

于 2008-10-06T15:40:42.343 に答える
0

LINQ は非常に下位レベル (DAL) である必要があり、BLL にラップする必要があると思います。

多くの人が LINQ to SQL が生成するモデルの部分的なアクセシビリティを使用することを好むことは知っていますが、利益を明確に分離する必要があると思います (私がそこで何をしたかを参照してください)。ビジネス ロジックを作成する場合は、データ アクセス ロジックから完全に切り離す必要があると思います。

コード内の using System.Linq 行がある場所ならどこでも、これらの LINQ 拡張メソッドをチェーンし続けることができるという事実が、それを難し​​くしていると思います。繰り返しになりますが、LINQは定義に属しており、可能な限り低いレベルにあるはずです。また、LINQ の使用を BLL でラップすると、TDD/単体テストがはるかに簡単になります。

于 2008-10-06T15:35:08.423 に答える
0

従来の「データ アクセス レイヤー」または「データ アクセス オブジェクト」で linq を使用しています。これにより、コードのモジュール化が可能になり、データ コードを 1 か所でプロモートし (同じコードをいくつかの異なる場所にカット アンド ペーストするのではなく)、別のフロント エンドを比較的簡単に開発できます。

于 2008-10-06T15:35:52.510 に答える