C#EF4と階層化設計とアセンブリ参照エラー
-
26-09-2019 - |
質問
私は最終的には、最新のEFリリースをチェックアウトし、私は私のテストでいくつかのトラブルに実行しているに周りに取得しています。
だから、私のDALの層が私の.EDMXファイルを保持していると私はまた、生成された.TTファイルとクラスを持っているので、私はMS POCOテンプレートを使用しています。
私は、これらのクラスから派生することを作成したTestProject.DALで、一般的な基本クラスを持っています。 即ち
public class BaseEntity<T> {}
public class Customer : BaseEntity<Customer> {}
public class Product : BaseEntity<Product> {}
そして、私のTestProject.BLL層に私はいくつかの派生クラスを持っています すなわちます。
public class TestProject.BLL.Customer : TestProject.DAL.Customer {}
public class TestProject.BLL.Product : TestProject.DAL.Product {}
すると、私のUI層に私は私のBLL.Customerオブジェクトを呼んでいます。 私はなど、DAL.Customerオブジェクトへの参照が追加されていないというエラーを取得します。
私は私のUIプロジェクトと私のBLLプロジェクトからDALへの参照からBLLプロジェクトへの参照を持っています。
なぜUI層は、それがそのプロジェクトで参照していないとき、それはDAL層の知っていることを不平を言っている?
また、サイドの問題として、ない「良い」デザインのようなこの表情?
おかげですべての! Goosey
解決
クレイグは正しいです - あなたのUIは、POCOエンティティタイプを参照しています。しかし、私は、もう少し詳しく説明します。
のあなたのUIプロジェクトは、アセンブリBLLを参照して、そのアセンブリがを組み立てDALを参照した状況にあったとのないの公にから任意のメンバーを露出させた場合アセンブリのことDAL、あなたは正しいだろう何を言っています。しかし、それは、ここで何が起こっているかではありません。 はのあなたのUIに公開さているあなたは、アセンブリBLLを参照され、その中のタイプは組立直接DALの種類、したがって、DALタイプから継承します。そのため、コンパイラはあなたのUIプロジェクトからアセンブリDALを参照する必要があることを知らせるメッセージ(正常)である。
あなたの「良いデザイン」の質問には、それは常に文脈に依存します。あなたのコンテキストのいずれかを知らなくても、私はこのような継承ツリーを作成することを躊躇します。アセンブリBLLであなたのサブクラスの仕事は何ですか?
他のヒント
あなたのUI のの参照POCOエンティティの種類を行う - BaseEntity
のジェネリック型パラメータを経由して、