プレゼンテーション層で nHibernate の依存関係を切り離す方法についてアドバイスが必要です。現在、次のレイヤーで構成される (簡略化された) 3 層の C# winforms アプリケーションがあります。
- ユーザー インターフェイス (UI)
- ビジネスロジック (BAL)
- データ アクセス ロジック (DAL)
このアプリケーションを ORM (nHibernate) に移行しており、理想的には nHibernate を参照する DAL のみを使用したいと考えています。また、nHibernate に含まれる「Unit of Work」機能を採用し、「Session per conversation」方式を採用したいと考えています。
これを実現するには、UI でセッションを作成して開き、セッションを BAL 経由で DAL に渡す必要がありますが、BAL と DAL の両方で nHibernate への依存関係を作成しないと、これを実現できません。
アドバイスをいただければ幸いです。UI と BAL で nHibernate への参照を避けるには、アーキテクチャをどのように構築する必要がありますか。何か案は?
また、UI に DAL への参照を持たせたくないことも付け加えておく必要があります。
UI => BAL => DAL