0

エンティティの接続文字列を変更するときにこの問題が発生しました。ここ接続文字列を動的に変更中にエラーが発生しました

はコードです:

SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(); 
         sqlBuilder.DataSource = @"KURT-PC\SQLEXPRESS"; 
         sqlBuilder.InitialCatalog = "KurtDB"; 
         sqlBuilder.UserID = "Admin"; 
         sqlBuilder.Password = "123456"; 
         sqlBuilder.IntegratedSecurity = false; 
         sqlBuilder.MultipleActiveResultSets = true; 

         EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); 
         entityBuilder.Provider = "System.Data.SqlClient"; 
         entityBuilder.ProviderConnectionString = sqlBuilder.ToString(); 
         entityBuilder.Metadata = @"res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl"; 

         this.Entities.Connection.ConnectionString = conn.Connection.ConnectionString = entityBuilder.ConnectionString.ToString(); 

それはその私にInvalidOperationEsceptionを与えて、接続文字列を変更しようとしたとき。

エラーの詳細: 接続を開くか、MetadataWorkspaceで接続を構築することで、メタデータが登録された後に接続を変更することはできません。

いずれかが、その私はあなたの例では、this.Entitiesは、Entity Frameworkのオブジェクトコンテキストのインスタンスであることを仮定してい

答えて

4

私を残しspeachless ....助けます。

エラーメッセージは、EntitiesオブジェクトのConnectionプロパティに単純に新しい接続文字列を割り当てることができないことを意味します。

代わりに、コンストラクタのパラメータとして渡す試してください。

  • あなたがエンティティのインスタンスを行探します。このような何かに
    this.Entities = new ...();
  • 変更を:
    this.Entities = new ...(entityBuilder.ConnectionString.ToString());
+0

を私はしようとしましたが、それは割り当てられた同じ接続文字列を維持します... KurtDBEntities conn =新しいKurtDBEntities(sqlBuilder.ConnectionString.ToString()); 公共KurtDBEntities(文字列れたconnectionString): が、それはこのコンストラクタを通過塩基(れたconnectionString、 "KurtDBEntities") {this.ContextOptions.LazyLoadingEnabled = TRUE。 OnContextCreated(); 詳細をArgumentExceptionがを持つ } とIM:D: – Mazda

+0

BDWので、本当に申し訳ありません、適切formattinを作る方法を知らないのStackOverflowする新... – Mazda

+0

おかげで必ず助けました – Mazda