9

3 つのプロジェクトを含む Visual Studio ソリューションがあります。

  • マイウェブサイト (A)
  • ビジネスモデル (B)
  • 持続性 (C)

Persistence、 projectは、すべてのリポジトリ インターフェイス、それらのリポジトリの実装、および DB テーブルにマップするクラスCに依存し、それらを含みます。NHibernateHibernate

BusinessModel、 projectは、すべてのサービス クラスおよびビジネス ドメイン エンティティを表すクラスにB依存し、それらを含みます。Cこれらのサービスは、リポジトリを使用してデータを取得し、そのデータをビジネス表現に変換して独自のインターフェイスに表示します。

MyWebSite、 projectは、すべての MVC クラス/ファイルAに依存し、含まれています。Aここでの MVC コントローラーは、サービス クラスを使用しBてビジネス ロジック機能を実行します。このレベルでは、 projectBが projectCのリポジトリを使用して操作を実行するという知識はありません。

完璧な世界では、そのプロジェクトABwhich references Cwhich referencesを参照する必要があると思いますNHibernate。これは真実ではないようです。プロジェクトにはandAの参照が必要であることがわかりました! Web アプリケーションがバックエンド アーキテクチャの知識を必要とするという考えは好きではありません。特に、ORM として使用しているという事実を認識させたくありません。B CNHibernateNHibernate

これらのプロジェクトに、参照を解決するときに推移的な依存関係を利用するように指示する方法はありますか?

その情報が違いを生む場合、私のプロジェクトはVisual Studio 2010の.NET 4です。

編集:私は、これらの参照が projectのクラスが project から表面化された場合にのみ必要であることを説明する関連する質問に対するこの SO の回答を見つけました。私はレイヤー間にリークがないように非常に固く決心しており、クラスはでのみ使用されることを知っているので、正しく理解していないだけかもしれません...CBHibernateC

4

0 に答える 0