3 つのプロジェクトを含む Visual Studio ソリューションがあります。
- マイウェブサイト (A)
- ビジネスモデル (B)
- 持続性 (C)
Persistence
、 projectは、すべてのリポジトリ インターフェイス、それらのリポジトリの実装、および DB テーブルにマップするクラスC
に依存し、それらを含みます。NHibernate
Hibernate
BusinessModel
、 projectは、すべてのサービス クラスおよびビジネス ドメイン エンティティを表すクラスにB
依存し、それらを含みます。C
これらのサービスは、リポジトリを使用してデータを取得し、そのデータをビジネス表現に変換して独自のインターフェイスに表示します。
MyWebSite
、 projectは、すべての MVC クラス/ファイルA
に依存し、含まれています。A
ここでの MVC コントローラーは、サービス クラスを使用しB
てビジネス ロジック機能を実行します。このレベルでは、 projectB
が projectC
のリポジトリを使用して操作を実行するという知識はありません。
完璧な世界では、そのプロジェクトA
はB
which references C
which referencesを参照する必要があると思いますNHibernate
。これは真実ではないようです。プロジェクトにはandへA
の参照が必要であることがわかりました! Web アプリケーションがバックエンド アーキテクチャの知識を必要とするという考えは好きではありません。特に、ORM として使用しているという事実を認識させたくありません。B
C
NHibernate
NHibernate
これらのプロジェクトに、参照を解決するときに推移的な依存関係を利用するように指示する方法はありますか?
その情報が違いを生む場合、私のプロジェクトはVisual Studio 2010の.NET 4です。
編集:私は、これらの参照が projectのクラスが project から表面化された場合にのみ必要であることを説明する関連する質問に対するこの SO の回答を見つけました。私はレイヤー間にリークがないように非常に固く決心しており、クラスはでのみ使用されることを知っているので、正しく理解していないだけかもしれません...C
B
Hibernate
C