C# и SQL Server CE — ключевое слово источника данных не поддерживается

Я пробую следующее решение и мне не очень повезло: Как я могу обновить значение источника данных строки подключения app.config в C#?

Код у меня есть:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// Because it's an EF connection string it's not a normal connection string
// so we pull it into the EntityConnectionStringBuilder instead
EntityConnectionStringBuilder efb = new EntityConnectionStringBuilder(
                config.ConnectionStrings.ConnectionStrings["WindowsFormsApplication1.Properties.Settings.TestDBConnectionString"]
                    .ConnectionString);

// Then we extract the actual underlying provider connection string
SqlConnectionStringBuilder sqb = new SqlConnectionStringBuilder(efb.ProviderConnectionString);

// Now we can set the datasource
sqb.DataSource = "|DataDirectory|\\TestDBa.sdf";

// Pop it back into the EntityConnectionStringBuilder 
efb.ProviderConnectionString = sqb.ConnectionString;

// And update...
config.ConnectionStrings.ConnectionStrings["WindowsFormsApplication1.Properties.Settings.TestDBConnectionString"]
            .ConnectionString = efb.ConnectionString;

config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");

В моем файле app.config есть:

<?xml version="1.0" encoding="utf-8" ?><configuration>
<configSections>
</configSections>
<connectionStrings>
    <add name="WindowsFormsApplication1.Properties.Settings.TestDBConnectionString"
        connectionString="Data Source=|DataDirectory|\TestDB.sdf"
        providerName="Microsoft.SqlServerCe.Client.4.0" />
</connectionStrings>
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup></configuration>

Где я ошибаюсь?


person hshah    schedule 04.09.2012    source источник


Ответы (2)


Я сам возился с SQL CE всего несколько дней, но если вы что-то делаете с базой данных SqlCE, вы, вероятно, захотите использовать классы SqlCe, а не классы Sql — попробуйте SqlCeConnectionStringBuilder?

Кроме этого, пока |DataSource| поддерживается в CE, строка подключения, которую вы опубликовали, выглядит как примеры, которые я видел и использовал.

person Jason Williams    schedule 04.09.2012
comment
В итоге я не использовал строку подключения в app.config, а вместо этого настроил свой собственный файл XML для чтения. Я попробую то, что вы сказали, чтобы увидеть, не ошибся ли я. - person hshah; 05.09.2012
comment
Извините - думаю, проблема в другом. - person Jason Williams; 05.09.2012

В итоге я создал свой собственный файл XML, в котором хранится строка базы данных и позволяет пользователю обновлять ее, если она недействительна или если они хотят подключиться к другой базе данных. Я думаю, что это работает лучше, чем пытаться обновить app.config.

person hshah    schedule 09.09.2012