2011-07-10 10 views
3

私はDAL(データアクセスレイヤー)、BLL(ビジネスロジックレイヤー)、プレゼンテーションレイヤー(通常はASP.NET Webアプリケーション)を使用するセットアップでEF4.1を使用しようとしています。またはコンソールアプリケーションかもしれません)。マルチレイヤーアプリケーションのエンティティフレームワーク

現在、私はすべてのプロジェクトをLINQ to SQLを使用して行い、上記で説明したように複数のレイヤーを使用する設定をしています。

すべての例がDALとBLLを使用する完全な例を見つけるのは難しいですが、1つの層または多分2つの層を使用するように見えますが、EFを見ると、

私が現時点で望むところに最も近いのは、POCOコードジェネレータを使用してPOCOクラスを作成し、これらのクラスをBLLプロジェクトに再配置することです。また、.edmxとオブジェクトコンテキストはそのまま残りますDAL。

しかし、DALはPOCOクラスについて知っておくために、DLLがBLLへの参照を必要とします。理想的に言えば、参照は逆になります。 DALにBLLへの参照がある場合は、BLLからDALへの参照もありません。循環参照はできないため、bllからsave changesメソッドを呼び出すようなオブジェクトコンテキストでは何もできません。

とにかく私はそれですべての混乱の少しを持っている。

私は、EFエンティティオブジェクトがDALにとどまり、私自身のBLLクラスを書いているだけで、別の方法(私がLINQ to SQLで現在行っているのと同じようなこと)をすることを検討しています。 DALオブジェクトのカウンターパーツ。そうすれば、DALはBLLとBLLへの参照を持つことができます。

申し訳ありませんが長い質問ですが、人々の考えに感謝しています。私は実際にEFについて何度も読んだことがありますが、それが多層アプローチでどのように機能するか見るためには苦労しています。

答えて

1

私は数ヶ月前に同じ質問をしました。

マイクロソフトのレイヤリングについてのホワイトペーパーが見つかりました。私は、EFがBLL + DALコンポーネントであると考えていることを思い出しています。プレゼンテーション(ASP.Net)+(EFクラスを含む、EDMXとDBコンテキスト)ビジネス・レイヤー:私は2つのだけレイヤーを作成

  • を:

    と私の場合は、ここで私がこれまで行ってきたものです私は実際に

(私のEF-オブジェクトのライフサイクルにわたるセッションやHttpRequestsを通じてより多くの制御を持っている)プレゼンテーション層内DBコンテキストを管理

  • 、私がBLL + DALをマージします。しかし、私は非常に複雑なビジネスプロセスを持つプロジェクトに関与していないことを認めなければなりません。 厳密なアーキテクチャの観点からは完璧ではないことは分かっていますが、それは私が扱わなければならない種類のプロジェクトではうまくいきます。最初の回で

    は、あなたのデータとビジネスモデルによって異なります..私は3つの層を作成してきたが、あなたは常にDALとプレゼンテーションをマッピングするための「ダム」クラスを作成する必要がある場合、それは悪夢になります複雑だと思います。

  • +0

    私たちは同じアプローチを取っています。 EFを使用している場合、別のDALに値が表示されません。 –

    関連する問題