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 を使用して接続を構築することによってメタデータが登録された後は、接続を変更することはできません。

どんな助けでも私を無言のままにします....

4

1 に答える 1

4

あなたの例でthis.Entitiesは、Entity Framework Object Contextのインスタンスであると想定しています。

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

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

  • エンティティをインスタンス化する行を見つけます。
    this.Entities = new ...();
  • 次のように変更します。
    this.Entities = new ...(entityBuilder.ConnectionString.ToString());
于 2012-01-05T22:29:56.313 に答える