私はASP.Net 2.0 Webアプリケーション用のデータアクセスレイヤーを追加しています。これは、ほとんどの場合、インラインSQL呼び出しとコピー/ペーストを多用しています。ビジネス上の懸念から、私は一度にアプリケーションの小さな部分を再構築することができます(巨大な再設計をすることはできません)。だから、十分に緩やかに結合されるまで設計上の決定を下す必要があります大きな変更を加えて適切にテストします。DAABを使用した動的接続文字列の処理
私はエンタープライズライブラリのデータアクセスアプリケーションブロックを今後のデータアクセス層の配管として使用することに決めました。そのような以前の設計上の決定が私に問題を引き起こしています。現在、ユーザーが提供するアカウントIDに基づいて管理データベースからアプリケーションの「メイン」接続文字列を取得するので、複数のデータベースにアプリケーションを1回インストールすることができます。私の問題は、その接続文字列(またはアカウントID)をDALに取得するベストプラクティスの方法を理解しようとすることを扱っています。
Public Shared Function GetResultsByKeywords(ByVal key1 As String, ByVal key2 As String, ByVal key3 As String, ByVal key4 As String) As DataTable
Dim db As SqlDatabase = New SqlDatabase(Connection.GetConnectString())
Dim dt As DataTable = New DataTable
Using dr As IDataReader = db.ExecuteReader("sel_eHELP_ITEMS", key1, key2, key3, key4)
dt.Load(dr)
End Using
Return dt
End Function
接続:私の現在のハック・アプローチは、そこから接続文字列を取得してから、次のようにDAABを使用することですので
以前の実装では、クッキー内の暗号化された接続文字列を格納しました。 GetConnectString()は、Cookieから接続文字列を取得しています。
私はこれを行うための最善の方法の近くにどこにもないことを知っています。私はそれを修正する必要がありますが、私はそれを行うために "正しい"方法で苦労しています。たぶん、私は接続文字列で初期化し、他のすべてのクラスを継承することができますが、私はどのように見えるか、私は最初にそのクラスのインスタンスを初期化するかわからない基本クラスを作成します。 DAL機能にアクセスする前にすべてのページで?
ガイダンスをいただければ幸いです。ありがとうございました。
更新
私は明確にしましょう。多くの場合、インストールには3つまたは4つの異なる接続文字列があります。 「アカウントID」はユーザーIDではなく、基本的に複数のユーザーが接続するデータベースを指定するために使用されます。
ありがとうございます。これは私が問題を解決する方法を正確にはしませんでしたが、私が使用した基本的な概念はまだ説明しています。クッキーに保存されている接続文字列はもうありません! – smathson