1

ASP.NET MVCとC#を使用して複数のデータベースレイヤをサポートできるレポジトリのスケルトンデザインはどうでしょうか?私は、LINQ to SQLとNHibernateの両方をサポートしていれば、デザインがどのように見えるかを見たいと思っています。どのように私のデータベースオブジェクトを作成し、私のBLL層のメソッドを呼び出すでしょうか?複数のデータアクセス戦略を処理するリポジトリをどのように設計できますか?

+0

私はあなたが設計し、あなたのソフトウェアを書くためにSOクレジットいる願っています。 – Welbog

+0

@Welbog:彼が私のコンサルタント率を支払っている限り、私は彼が私に信用を与えるかどうか気にしません。 – Pesto

答えて

8

repository patternはおそらくこのための最適な解決策です。リポジトリごとにインターフェイスを定義し、Linq2SqlおよびNHibernate実装用の具体的なリポジトリを作成します。

public interface ICustomerRepository 
{ 
    Customer GetCustomer(int id); 
} 

public class NhibCustomerRepository : ICustomerRepository 
{ 
    public Customer GetCustomer(int id) 
    { 
     // NHibernate implementation 
    } 
} 

public class LtsCustomerRepository : ICustomerRepository 
{ 
    public Customer GetCustomer(int id) 
    { 
     // Linq2Sql implementation 
    } 
} 

依存性注入フレームワーク、などNinjectは、それが簡単に動的な実装を切り替えることができます。現在のセッションをリポジトリに渡して、同じ作業単位に参加するようにするには、NHibernateで追加の依存関係注入を行う必要があります。

関連する問題