Развертывание SQLCE.EntityFramework 4.0.8435.1

Я применил SQLCE в проекте, над которым работал. Он отлично работает в Visual Studio, и когда я запускаю локально (http: // localhost: ####), он отлично работает. Но когда я публикую его на своем удаленном хосте, я получаю «Желтый экран смерти» со следующим сообщением об ошибке:

Не удалось найти или загрузить зарегистрированный поставщик данных .Net Framework.

Мой Web.Config и ссылки в порядке (как я уже сказал, он отлично работает на localhost), нет необходимости менять его. Файл sdf развернут по правильному пути.

Чего не хватает?


person Andre Vianna    schedule 12.11.2010    source источник
comment
Дубликат stackoverflow.com/questions/3223359/   -  person ErikEJ    schedule 13.11.2010


Ответы (2)


Я нашел ответ. Когда SQLCE установлен в ваш проект, он добавляет несколько файлов и папок в каталог bin вашего веб-приложения.

Следующие файлы и папки должны быть развернуты вместе с вашим приложением в папке bin.

Microsoft.Data.Entity.CTP.dll
System.Data.SqlServerCe.dll
System.Data.SqlServerCe.Entity.dll
WebActivator.dll
[x86] (папка)
[ x86] \ sqlcecompact40.dll
[x86] \ sqlceer40EN.dll
[x86] \ sqlceme40.dll
[x86] \ sqlceqp40.dll
[x86] \ sqlcese40.dll
[ amd64] (папка)
[amd64] \ sqlcecompact40.dll
[amd64] \ sqlceer40EN.dll
[amd64] \ sqlceme40.dll
[amd64] \ sqlceqp40.dll
[amd64 ] \ sqlcese40.dll

Файлы в корне папки bin (первые четыре, которые я упомянул выше) были развернуты, но по какой-то причине папки x86 и amd64 не были отправлены.

После того, как я развернул эти файлы, приложение также нормально работало на удаленном хосте.

person Andre Vianna    schedule 12.11.2010
comment
Я думаю, вам не нужно будет копировать библиотеки DLL SQLCE в каталог bin после выпуска .Net 4.0 SP1, поскольку они будут поставляться со стандартной установкой .Net framework. - person Morteza Manavi; 13.11.2010
comment
Спасибо, это мне очень помогло :) - person Steve Hobbs; 26.01.2011
comment
Я использовал развертывание на основе частных файлов, как описано здесь: msdn.microsoft.com/en-us/library/aa983326%28v=vs.80%29.aspx - person Leniel Maccaferri; 03.05.2012
comment
Самое простое решение - добавить этап после сборки, чтобы скопировать их из папки NativeBinaries пакета NuGet. - person Dale Anderson; 23.03.2015

Проблема в том, что на вашем удаленном хосте нет провайдера для SQLCE. Если вы посмотрите на строку подключения, она будет примерно такой:

<connectionStrings>      
  <add name="name" 
       connectionString="Data Source=|DataDirectory|yourDbFileName.sdf" 
       providerName="System.Data.SqlServerCe.4.0"/>      
</connectionStrings>

Обратите внимание, что SQL CE и его System.Data.SqlServerCe.4.0 провайдер были выпущен после .Net 4.0, поэтому не был включен в стандартный .Net framework 4.0. Итак, поставщик SqlServerCe.4.0 отсутствует

person Morteza Manavi    schedule 12.11.2010
comment
Нет. Строка подключения верна. См. Правильный ответ, который я опубликовал. - person Andre Vianna; 12.11.2010
comment
Я не сказал, что ваша строка подключения неверна, я сказал, что на вашем удаленном хосте НЕ установлен поставщик SqlServerCe.4.0, потому что он был выпущен после .Net 4.0. Иногда лучше сначала прочитать ответ, прежде чем проголосовать за него :) - person Morteza Manavi; 12.11.2010
comment
Им не нужно устанавливать SqlServerCe 4.0. Упомянутых мною выше dll достаточно для использования функциональности SQLCE sdf файла. Я думаю, что это лучшее, что есть в SQLCE 4.0. Я больше не зависим от конфигурации хоста db и ограничений. - person Andre Vianna; 12.11.2010
comment
Я согласен, это здорово, что его можно настроить без какой-либо зависимости от хоста. - person Morteza Manavi; 13.11.2010