皆さん、
標準の 3 層アーキテクチャでは、Linq2SQL dbml ファイルをどこに置きますか?
あなたの答えは ado.net エンティティ データ モデルと同じですか?
dbml ファイルが中間層にある場合、データ層はありますか?
よろしく、
ブレット
皆さん、
標準の 3 層アーキテクチャでは、Linq2SQL dbml ファイルをどこに置きますか?
あなたの答えは ado.net エンティティ データ モデルと同じですか?
dbml ファイルが中間層にある場合、データ層はありますか?
よろしく、
ブレット
DBMLはデータレイヤーの一部である必要があり、ビジネスレイヤーに直接公開されてはなりません。代わりに、エンティティの取得と保存のメソッドを公開し、永続性の詳細との相互作用を隠蔽するのが最善です(この場合はLinq2Sqlですが、抽象化することで、後でLinq2Entitiesなどに変更できます。アプリ)。
これは、複数のクエリを実行し、データを少し操作してエンティティを作成する必要がある場合や、保存時に追加の作業(子テーブルの外部キーの処理など)を行う必要がある場合にも適したモデルであり、これらの詳細を非表示に保ちます。他の層。
L2Sqlのシリアル化がうまくいかないというStevenのコメントに関しては、残念ながら、Linq2Sqlのビルダーが提供するものをそのまま使用すると当てはまります。ただし、部分クラスでのいくつかの回避策は、それを簡単にクリーンアップします。
DBML は確かに中間層にあります。LINQ to SQL は、データ層 (SQL Server データベース) に対してクエリを実行します。通常、LINQ to SQL は中間層の最下層にあり、LINQ to SQL エンティティをネットワーク経由で送信することはありません (適切にシリアル化されません)。
Entity Framework を使用すると、アーキテクチャはよく似ていますが、EF ではドメイン オブジェクトをネットワーク経由で送信できる点が異なります。特に、EF とうまく統合する新しいテクノロジ (OData など) が登場しています。