2016-08-23 1 views
1

単純なwinformsアプリケーションを構築していますが、nティアアーキテクチャ、Dependecyインジェクション(単純インジェクタ付き)、Entity Frameworkコードファースト、リポジトリおよび作業単位パターンを使用しています。DIフォームとリポジトリを持つWinForms N-Tierアプリケーション

  • UIレイヤー。
    • フォーム。
  • ビジネスロジックレイヤー。
    • ビジネスオブジェクト "マネージャ"(ビジネスプロセスを公開するクラス)。
  • データアクセス層
    • リポジトリ。
    • データベースコンテキスト。

基本的に、私は、アプリケーションのエントリポイント(Program.csを)上の私のコンテナにオブジェクトを登録することができます知っているが、それは唯一のデータアクセス層のオブジェクトを除外UIからアクセス可能なオブジェクトのために働きます。

したがって、クラスライブラリであるため、ビジネスロジックレイヤからオブジェクトを登録するにはどうすればよいですか。

ありがとうございます。

+0

をこれは愚かな反復です**これをやろうとしないでください、あなたはあなたのコードを悩ますでしょう。 EntityFramework ** IS **作業単位とリポジトリのパターン –

+1

関連:http://programmers.stackexchange.com/q/300376/201695 –

答えて

1

依存関係と参照を区別する必要があります。

あなたのUIはDataAccessLayerに依存してはならないと言っても間違いありません。しかし、これは、SQL Serverのコードにハードワイヤード接続するべきではないことを意味します(例を挙げてください)。しかし、あなたはそのプロジェクトを参照することはできません。

問題を解決するには、UIのすべてのプロジェクトを参照するだけです(アプリケーションのエントリポイントになります)。

実際には、UI => Business Logic => Data Accessのような参照を作成すると、間接的にUIからデータレイヤーを参照することになります。

私は、さらに詳細にそれを説明し、まさにこのについての記事書いた:「Entity Frameworkのコードまず、リポジトリと作業単位パターンの」

https://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/

+0

はい、私は知っている_indirectly_ UIからDALを参照しています。応答をありがとう、私はそれを見てみましょう。 – hyperar

関連する問題