2017-01-23 9 views
0

3つのプロジェクト(C#)API、BLLおよびDALがあります。 DALはDALを参照し、APIはBLLを参照します。私はすべてのCRUD機能を使用する必要がありますが、VSは「タイプ 『blabla』の中で定義されていることを言ったので、私は私のBLLから機能を使用することはできません私のAPIでAPIのDALを参照せずにBLL関数を使用

enter image description here

enter image description here

アセンブリは参照されません。参照(DAL)を追加する必要がありますが、APIプロジェクトでDALを参照したくありません。私のDALプロジェクトを使わずにそれを行う方法はありますか?

+2

BLLが依存している場合は、メインプロジェクトをDALで参照する必要があります。さもなければ、BLLはどのように呼び出す関数を見つけるでしょうか? DALのコンパイルされたコードが失われます。それはちょうどそれが動作する方法です、それは心配することは何もありません。 – ADyson

+0

しかし、BLLはどこかでDALを使うべきですか? – McNets

+0

@ADyson私のBLLプロジェクトはDALを使用していますが、BLLを参照するとAPIのDALへの参照を追加する理由は何ですか? –

答えて

1

私の考えでは、達成しようとしていることはプロジェクトを設計する良い方法です。私も同じことをやっています。私は以下で説明する小さな違いです。 APIでDALを参照していないと、DALへのすべての呼び出しはBLLを介してのみ行われます。すべてのデータ処理ロジックを1か所にまとめたいからです。配布されている場合、問題を見つけるのは難しいです。

私は4つのプロジェクトがあります

  1. Utilsの(あなたの "blabla" のものはここに行く)[参照]何]
  2. DAL(データベースのものをここに)[参考資料のUtils]
  3. BLL(あなたをロジックのもの)は、ここで[必要に応じて参考文献BLLとのUtils] [参照] DALとUtilsの必要に応じて]
  4. APIを(あなたのAPIのものをここに)行く

これは片方向リファレンスチェーンです。 DAL => BLL => API。逆の順序での参照は存在してはいけません。 Utilsは、エンティティ宣言、例外、列挙型のような共通のものが必要な共通のものでなければなりません。

注:APIでDALを参照していないにもかかわらず、それを展開する必要があります。

APIでUtilsを使用しないようにするには、もう1つのDTOレイヤーを追加し、それらをエンティティにマップする必要があります。同じ私の他のquestionを参照してください。

関連する問題