2012-01-03 7 views
0

2つのデータソースがあります。最初はOLEDBを使用して接続し、その他はSQLデータプロバイダを使用します。asp.net内の2つの異なるデータソースにアクセスするために単一のデータアクセスレイヤを作成する方法

私は常にデータアクセスロジックをカプセル化するDALを作成したが、今回はそれが私は2つの異なるDAL(OLDBとSQLProviderを作成する必要が縫い目。

を、これは正しいアプローチであるのでしょうか、私は、単一のDALと通信することができます。 ASp.NETアプリケーションから別のデータソースを通信しながら最善のアプローチが続いているものを提案してください。

おかげ

答えて

1

をあなたは、あなたが2にアクセスしたい場合は、別の層にデータアクセスロジックをカプセル化する必要があることを右です異なるデータソース、

重要な点は、他のコードが実装ではなくインターフェイスを使用してDALにアクセスすることです。例えばので

public interface IRepository 
    { 
     Person GetPersonById(Guid id); 
    } 

    public class OleRepository : IRepository 
    { 
     public Person GetPersonById(Guid id) 
     { 
      // Do some Ole specific stuff to return a person 
     } 
    } 

    public class SqlRepository : IRepository 
    { 
     public Person GetPersonById(Guid id) 
     { 
      // Do some Sql Server specific stuff to return a person 
     } 
    } 

あなたのコードでは、あなたはIRepositoryインタフェースに対してプログラムすると、あなたは、特定の実装に依存しないでしょう。実行時に、Repository実装(たとえば、Dependency Injection)を選択します。

+0

これは、DALクラスのメソッドシグネチャです。public static int ExecuteNonQuery(CommandType commandType、string commandText、params SqlParameter [] commandParameters)。では、SQL Serverの場合にSQLParametersを渡しているため、どのようにしてインターフェイスを作成するのでしょうか。 – iPhoneDev

+0

ジェネリックインターフェイスの背後にある各実装の特定の詳細を非表示にする必要があります。したがって、特定のCommandTypeとSqlParametersを渡す代わりに、汎用インターフェイスが必要です。実装では、特定のSqlメソッドまたはOleメソッドを呼び出します。 –

+0

ありがとう私はポイントを得た – iPhoneDev

関連する問題