このシナリオの例を検索/見つける際に精神的なブロックが発生しています。
ユーザー A がログオンし、"abcServer" の "master" データベースに接続して、アカウントを確認します。承認されると、サーバーは「unique-A」データベースの接続文字列を「abcServer」のユーザー A に返します。
EF の dbContext には connString 名を割り当てるコンストラクターがあることは知っていますが、これを動的にしたい:
(1) DbContext
// dbContext constructor
public MasterDatabase() : base("name=MasterDatabase")
{
Configuration.LazyLoadingEnabled = false;
}
(2) デフォルトの接続は
// web.config
<connectionStrings>
<add name="MasterDatabase" connectionString="Data Source=abcServer;Initial
Catalog=Master;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
しかし、connStr のハードコーディングは以上です。プロジェクトの残りの部分は、ログインが成功して接続文字列が返されるまで決定されない、データベース内の EF クラスを操作するそれぞれのユーザーに関するものです。このようなもの:
(3) コントローラ内でconn文字列を変更する方法
// in api controller, once log in successful, call to method return value as parameter
private void Connect2DbwithThisUsersConnString(string connStr)
{
// change the conn string & USE THIS CONTEXT to this user's db
}
これのasp.net/mvcの例はありますか? 前もって感謝します。ここで気が狂います。
覚えておいてください: ログインするまで接続文字列はわかりません。これは新しいユーザーである可能性があり、その場で新しいデータベースを作成し、その connStr を渡す必要があります。一意の dbContext "base" または conn 文字列をハードコーディングできません。
ご清聴ありがとうございました!