2012-01-18 5 views
0

ページングを使用してクライアントデータのGridViewを表示するページを構築しています。私のaspxページには、DataSourceIDがObjectDataSourceに設定されているGridViewがあります。 ObjectDataSourceは、BLLにバインドされ、BLLはDALを介してデータにアクセスします。静的なデータベースを指している間、私はすべてのことを実行している。ただし、各クライアントのデータは独自のデータベースに格納されます。次のステップは、クライアントログインに応じてDALのConnectionStringを変更することです。実行時にASP.NET GridView - > BLL - > DALの接続文字列を変更します。

オプション「ConnectionModifier」を「Public」に設定してDAL TableAdapterを構成しました。私のBLLはDALの接続文字列を変更できますが、BLLにクライアントデータベース名を渡す方法はわかりません。

public class PDFDocumentsBLL { 
    private PDFTableAdapter _pdfdocumentsadapter = null; 
    protected PDFTableAdapter Adapter { 
    get { 
     if (_pdfdocumentsadapter == null) { 
     _pdfdocumentsadapter = new PDFTableAdapter(); 
     _pdfdocumentsadapter.Connection = new System.Data.SqlClient.SqlConnection(
      ConfigurationManager.ConnectionStrings["template"].ConnectionString.Replace("TEMPLATE", "TESTCLIENT") 
     ); 
     } 
     return _pdfdocumentsadapter; 
    } 
    } 
    ... 
} 

私は変数と上記のコードでは、文字列「TESTCLIENT」を交換したいのですが、私はBLLにこの情報を渡す方法についての損失でいます。

答えて

0

セッション変数から取得します。

1

あなたは

public class DataBaseNameProvider 
{ 
    public string GetDataBaseName() 
    { 
     var userName = Membership.GetUser().UserName; 
     return GetDatabaseNameByUserName(userName); 
    } 
} 

のように、ユーザ名に基づいてデータベース名を返しますデータベース名プロバイダのいくつかの種類を作成し、BLLからそのクラスを呼び出すことができます。

依存関係を追加したくないためにBLLにASP.NETのものを使用するのが気に入らない場合でも、メンバーシップを意識したBLLを作成してBLLを作成することができますそこにユーザー名を渡します。 Windows認証を使用している場合は、完全に使用できるよう

0

、あなたは、それはそれをより柔軟になり、単に

ConfigurationManager.ConnectionStrings[WindowsIdentity.GetCurrent().Name] 

を使用することができ、各ユーザーのための全体の接続文字列を取得することをお勧めかもしれません必要に応じて異なるタイプのデータベース。

public class PDFDocumentsBLL { 
    private PDFTableAdapter _pdfdocumentsadapter = null; 
    public string PDFDB = "PDF_TEMPLATE"; 
    protected PDFTableAdapter Adapter { 
    get { 
     if (_pdfdocumentsadapter == null) { 
     _pdfdocumentsadapter = new PDFTableAdapter(); 

     _pdfdocumentsadapter.Connection = new System.Data.SqlClient.SqlConnection(
      ConfigurationManager.ConnectionStrings["pdf"].ConnectionString.Replace("PDF_TEMPLATE", PDFDB) 
     ); 
     } 
     return _pdfdocumentsadapter; 
    } 
    } 
} 

が、私はその後、追加のパラメータとしてDBを取るためにGetBy/FillBy機能を変更し、その値を渡すためにObjectDataSourceを設定した:私は私のBLLにPDFDBプロパティを追加してやってしまった何を

+0

これは、最も管理しやすいソリューションではなく、各クライアントのWeb.configにエントリを追加する必要があります。 – Brandon

関連する問題