33

わかりました、EF 4.1 から EF 5.0 を使用して作成したプロジェクトを再作成したいと思います。十分に単純であるか、少なくとも私は考えました。私の古いプロジェクトの 1 つは、EF 4.1 で実行時にデータベース接続文字列を変更できたことです。

using (var myContext = new MyEntities(ConnectionString))
{

}

簡単ですが、EF 5.0 ではこれを別の方法で行う必要があります。

string connectionString = "data source=LocalHost;initial catalog=MyDatabase;user id=MyUserName;password=MyPassword;multipleactiveresultsets=True;App=EntityFramework";

using (var myContext = new MyEntities())
{
         myContext.Database.Connection.ConnectionString = connectionString;
}

さて、これを理解するのに 2 時間以上かかりました。私の質問は、これが実行時に接続文字列を変更する適切な方法であるかどうかだと思いますか? もしそうなら、なぜ彼らはこの変更をしたのですか?

このリンクは見つかりましたが、うまくいきませんでした。Ladislav Mrnka による最初の回答の最初のコメントに詳述されているエラーを受け取りました。後でこのリンクを見つけましたが、これはうまく機能しているようです。

アップデート

投稿した最初のリンクを読み直し、別の解決策を見つけました。単純に部分クラスを作成しました。

public partial class MyEntities : DbContext
{
    public MyEntities(string connectionString) : base(connectionString) 
    {
          Database.Connection.ConnectionString = connectionString; 
    }
}
4

2 に答える 2

6

接続文字列をパラメーターとして受け取るコンテキスト コンストラクター オーバーロードを使用します。

于 2013-03-12T17:53:00.177 に答える