2012-04-05 13 views
0

カスタムデータアクセスレイヤーを作成することは、1)あなたのしていることを正確に把握しているか、または2)非常に具体的な必要がある場合を除いて、あまり良いことではありません。しかし、私は、各メソッドは次のようになりますカスタムデータアクセス層を使用して、いくつかのレガシーコードを維持しています:その結果、使用量がこのようなものになります静的データアクセス方法

using (SqlConnection cn = new SqlConnection(connectionString)) 
{ 
    using (SqlDataAdapter da = new SqlDataAdapter("sp_select_details", cn)) 
    { 
     using (DataSet ds = new DataSet()) 
     { 
      da.SelectCommand.Parameters.Add("@blind", SqlDbType.Bit).Value = blind; 
      da.SelectCommand.CommandType = CommandType.StoredProcedure; 
      da.SelectCommand.CommandTimeout = CommandTimeout; 
      da.Fill(ds, "sp_select_details"); 
      return ds; 
     } 
    } 
} 

protected void Page_Load(object sender, EventArgs e) { 
    using (Data da = new Data ("SQL Server connection string")) { 
     DataSet ds = da.sp_select_blind_options(Session.SessionID); //opens a connection 
     Boolean result = da.sp_select_login_exists("someone");//opens another connection 
    } 
} 

を、私はそれを考えていますマイクロソフト社のエンタープライズライブラリを使用することで、私は設定と破棄、つまりSQL Serverへの接続をすべてのメソッド呼び出しから救うことができます。私はこの考え方で正しいですか?

+0

カスタムデータアクセスレイヤーはまったく間違っていません。彼らが必要としていることを知らずにやっていない人々によって書かれた非カスタムアクセス層。今ではtahtで間違ったことがたくさんあります。 –

答えて

0

はい、それは間違いなくあなたの時間の節約になりますが、あなたはパフォーマンス柔軟性の面で支払うことになります。

したがって、カスタムを作成すると、パフォーマンスと柔軟性を得ることができます。DataLayer

、私が思う、ということ、あなたがレガシーコードの話をしていることを考えると、私は私のコードに新鮮な何かを持つために、現代(あまりパフォーマンス)何かに変更していないだろう、動作します。

ソリッドで実行可能なDataLayerは、レガシーコードで実装する必要がある他の新技術に勝る最良の選択肢です。

簡潔に言えば、が本当にとなっている場合にのみ変更してください。私はあなたの意欲を変えることを理解しています。誰かが書いたコードを理解することは常に難しいので、私は信じています。プロジェクトのために古いレガシーコードを変更しないことがよくあります。

幸運。

0

これまでエンタープライズライブラリを使用してきましたが、エンタープライズライブラリは、あなたの面倒な詳細を隠していましたが、本質的には同じコードを使用しています。

@tigranによると、根本的な問題がない限り、既存のコードベースを変更しようとは勧めません。

+0

主なことは、以前に開かれた接続を使用したいのですが、データ・セットの代わりにデータ・リーダーを使用しています。私がコードを進めながら、データアクセスクラスが呼び出しメソッド内で何度も何度も再インスタンス化されていることに気付きました。どのように私が教えられたから、これはノーではありません。 – Jim

+0

ああ、DataSetsについての良い点。私はいつもDataReaderを使って型に変換しました。 – Phil

0

もちろん、デフォルトでは接続プールがオンになっています。アプリケーションドメインは基本的に接続のリストを保持しています。接続を作成するために呼び出しを発行すると、プールから未使用のものがあればそれを返します。

ステートメントとgetを使用して接続が切断された場合、実際にはプールに戻り、次のリクエストに備えて、さまざまな最適化パラメータに基づいてハングアップします。

詳細については、Google ADO接続プールをご覧ください。そこには多くのものがあります。

+0

OK。ありがとう。だから、上記のうち、データアクセスのためにMicrosoft Enterprise Libraryのようなものを使用することで得られるメリットはどれほどのメリットがありますか。 ORMを使用するほうがよいでしょう。なぜなら、私たちのデータベーススキーマはかなり釘付けになっているからです。しかし、それはその力からの質問から外れています。 – Jim

+0

接続プールは、ADO.netが使用されているいずれかの下にあります。したがって、DALのアーキテクチャの選択に影響はありません –

関連する問題