Ошибка при динамическом изменении строки подключения - PullRequest
0 голосов
/ 06 января 2012

У меня возникла эта проблема при изменении строки подключения моих сущностей.

вот код:

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.

Любая помощь, оставляющая меня безмолвным ....

1 Ответ

4 голосов
/ 06 января 2012

Я предполагаю, что в вашем примере this.Entities является экземпляром контекста объекта Entity Framework.

Сообщение об ошибке означает, что вы не можете просто присвоить новую строку подключения свойству Connection объекта Entities.

Вместо этого попробуйте передать его в качестве параметра конструктора:

  • найдите строку, в которой вы создаете экземпляр Entities:
    this.Entities = new ...();
  • измените его на что-то вроде этого:
    this.Entities = new ...(entityBuilder.ConnectionString.ToString());
...