«Bin Deploy» Sql CE 3.5 SP2 и ошибка, когда она уже установлена - PullRequest
1 голос
/ 20 мая 2011

У меня есть приложение, которое использует Sql CE 3.5 SP2.Я включил библиотеки DLL, которые требуются для Sql CE - их здесь 7 (C: \ Program Files (x86) \ Microsoft SQL Server Compact Edition \ v3.5), которые я просто добавляю в пакет развертывания в виде файлов приложения.

Я также использую EF для доступа к БД, поэтому я добавил запись в свой файл app.config для предоставления провайдера данных:

<system.data>
 <DbProviderFactories>
  <add name="Microsoft SQL Server Compact Data Provider"
             invariant="System.Data.SqlServerCe.3.5"
             description=".NET Framework Data Provider for Microsoft SQL Server Compact"
             type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
 </DbProviderFactories>
</system.data>

Выполнение вышеупомянутых работ для моегоразвернутые приложения;однако, когда я запускаю свое приложение в режиме отладки из VS2010, любые вызовы БД, которые выполняются через EF, приводят к этой ошибке:

The specified store provider cannot be found in the configuration, or is not valid.

Если я удаляю запись из моего app.config, она работает нормально, ноперестает работать для развернутых приложений.

Есть ли счастливая среда?Я предполагаю, что причина ошибки заключается в том, что на моей машине разработки установлена ​​легальная копия Sql CE, и по какой-то причине регистрация в моем app.config приводит к ее поломке, хотя я не совсем понимаю, почему.

Советы?Предложения?

Заранее спасибо.

1 Ответ

2 голосов
/ 20 мая 2011

Я должен был сделать немного больше поиска. Я нашел проблему, кажется, мне нужно удалить поставщика, прежде чем добавить его. При наличии реальной установки Sql CE он регистрируется в machine.config, поэтому добавление его в app.config приводит к его двойной регистрации.

Это то, что должно идти в app.config

<system.data>
<DbProviderFactories>
  <remove invariant="System.Data.SqlServerCe.3.5" />
  <add name="Microsoft SQL Server Compact Data Provider"
             invariant="System.Data.SqlServerCe.3.5"
             description=".NET Framework Data Provider for Microsoft SQL Server Compact"
             type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...