4

ユーザーごとに異なる接続文字列が必要であるという要件があります。アイデアは、接続文字列のandとして使用されるログイン画面でusernameand を提供することです。したがって、アプリケーションを作成して、ユーザーごとに異なる接続文字列を使用し、アプリケーション全体でこの接続文字列を使用します。passwordusernamepassword

EF 4.1 でこのセットアップを取得する方法

PS:私は使用していますDbContext

4

3 に答える 3

6

KevinJunghansに感謝します

これが私がやった方法です。

モデルコンテキストクラスで

public class MyEntities : DbContext
{
    public MyEntities (string connectionString)
        : base(connectionString)
    {
    }

次に、ログインコントローラで

var dataConnection = WebConfigurationManager.OpenWebConfiguration("/").ConnectionStrings.ConnectionStrings["MyConnectionString"].ConnectionString;
dataConnection = dataConnection.Substring(0, dataConnection.LastIndexOf("\"")) + ";USER ID=" + userName +";Password=" + password + "\"";
Session["connectionString"] = dataConnection;

そして他のどこから

var _db = new MyEntities (Session["connectionString"].ToString());
于 2013-01-23T14:33:33.030 に答える
4

接続文字列または名前を引数として受け入れる次のDbContext コンストラクターを使用できます。

public DbContext(
string nameOrConnectionString,
DbCompiledModel model
)
于 2013-01-23T13:37:18.960 に答える
3

どちらが具体的にあなたの質問なのかわかりません。MVCについてではなく、EF専用です。

私があなたのやりたいことを正しく理解していれば、おそらくユーザーごとにデータベースが分かれていますが、ログイン用のユーザーアカウント情報用のデータベースは1つだけです。

そのデータベースにもう1つのフィールド、ユーザーログインデータベースを、そのユーザーの特定のconnectionStringで追加できます。次に、ユーザーがログインするときに、そのデータベースのDbContextを使用してログインし、connectionStringの値を取得して、ログインしたユーザーの特定のデータベースの新しいDbContextを生成します。

さらにサポートが必要な場合はコメントしてください。

于 2013-01-23T13:55:07.430 に答える