web-dev-qa-db-ja.com

EF 5実行時に接続文字列を変更する

わかりました。EF4.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時間のかなりの部分を取ったので、私の質問はこれが実行時に接続文字列を変更する適切な方法であるかどうかと思いますか?もしそうなら、彼らはこの変更をしたのですか?

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

更新

私は 最初のリンク を再読しましたが、投稿して別の解決策を見つけました、単に部分クラスを作成しました:

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

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

6
marianosz

他のリンクを見てください 動的接続文字列のセットアップエンティティフレームワーク 。それは言う-「あなたはエンティティクラスが部分的に宣言されているように別の部分クラスを作成することによってそれを行うことができます」

0
Faiyaz