Развертывание SQLCE.EntityFramework 4.0.8435.1 - PullRequest
2 голосов
/ 12 ноября 2010

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 12 ноября 2010

Я нашел ответ.Когда 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 не были отправлены.

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

1 голос
/ 12 ноября 2010

Проблема в том, что у вашего удаленного хоста нет провайдера для 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 провайдер отсутствует

...