0

私はついに最新のEFリリースをチェックするようになり、テストでいくつかの問題が発生しています。

したがって、DALレイヤーは.EDMXファイルを保持し、MS POCOテンプレートを使用しているので、生成された.TTファイルとクラスもあります。

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プロジェクトへの参照と、BLLプロジェクトからのDALへの参照があります。

UIレイヤーが、そのプロジェクトで参照されていないときにDALレイヤーを認識していると不平を言うのはなぜですか?

また、副次的な質問として、これは「良い」デザインのように見えますか?

皆さんありがとう!グーシー

4

2 に答える 2

1

Craigは正しいです-UIはPOCOエンティティタイプを参照しています。しかし、もう少し詳しく説明します。

UIプロジェクトがBLLアセンブリを参照していて、そのアセンブリがDALアセンブリを参照していて、そのDALアセンブリのメンバーを公開していない状況にある場合、あなた言っていることは正しいでしょう。しかし、それはここで起こっていることではありません。BLLアセンブリを参照しており、そのアセンブリ内のタイプはDALタイプから直接継承しているため、DALタイプUIに公開されています。したがって、コンパイラは、UIプロジェクトからDALアセンブリを参照する必要があることを(正しく)通知しています。

あなたの「良いデザイン」の質問に関しては、それは常に文脈に依存します。あなたの文脈を知らずに、私はこのような継承ツリーを作成することを躊躇します。BLLアセンブリのサブクラスの仕事は何ですか?

于 2010-09-30T18:11:57.363 に答える
1

UIPOCO エンティティ タイプを参照します - のジェネリック タイプ パラメータを介してBaseEntity

于 2010-09-30T16:07:54.560 に答える