Использование SQL Server CE 4 на удаленном хосте с MVC 3 - PullRequest
29 голосов
/ 21 января 2011

Я только что обновил свой хост до MVC 3, но я пытаюсь создать «привет мир», используя SQLCE 4.0, но я только что получил:

Извините, при обработке вашего запроса произошла ошибка.

Я вижу свой макет и все, но вместо данных я вижу это.

На локальном хосте работает как положено

У меня есть:

<add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0"/>

как connectionString.

Я поместил sdf как часть проекта, я добавил System.Data.SqlServerCE.dll в проект с локальной копией к истине.

У меня больше нет идей.ConnString, dll находится в / bin и работает в localhost.

Есть идеи?

Спасибо.

РЕДАКТИРОВАТЬ

У меня есть несколько журналов:

Без «System.Data.SqlServerCE.dll» в / bin:

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

System.ArgumentException: не удалось найти запрошенный поставщик данных .Net Framework.Возможно, он не установлен.

Достаточно хорошо.У них нет SqlServerCE4.

С Dll на локальной копии, AKA / bin:

Невозможно загрузить собственные компоненты SQL Server Compact, соответствующие поставщику ADO.NETверсии 8482. Установите правильную версию SQL Server Compact.Подробнее см. В статье 974247. КБ.

Сведения об исключении: System.Data.SqlServerCe.SqlCeException: невозможно загрузить собственные компоненты SQL Server Compact, соответствующие поставщику ADO.NET версии 8482. Установите правильную версиюверсия SQL Server Compact.Более подробную информацию смотрите в статье 974247. КБ.

В КБ говорится, что мне нужны dll из x86 и amd64.Я где-то читал, что если я скопирую две директории в / bin, например: / bin / x86 и / bin / amd64.Я скопировал эти папки из личной папки установочной папки SqlServerCE 4.Теперь я получил:

Обнаружено возможное несоответствие версий файла между поставщиком ADO.NET и собственными двоичными файлами SQL Server Compact, что может привести к неправильной работе.Это может быть связано с наличием нескольких экземпляров SQL Server Compact разных версий или из-за неправильных двоичных файлов с тем же именем, что и двоичные файлы SQL Server Compact.Пожалуйста, установите двоичные файлы SQL Server Compact соответствующей версии.

ОК.В корневой папке SQLServerCE4 у меня тоже есть несколько dll, поэтому я удалил эти две папки и скопировал эту dll в / bin:

Не удалось загрузить файл или сборку 'file: /// C: \HostingSpaces \ jesusrod \ foxandxss.net \ wwwroot \ mvc3 \ bin \ sqlceca40.dll 'или одна из его зависимостей.Модуль должен был содержать манифест сборки.

Я думаю, что перепробовал все.Скотту сказал, что SqlServerCE 4 должен работать на любом сервере без установки.

Ответы [ 6 ]

31 голосов
/ 05 февраля 2011

Я не люблю отвечать на свой собственный ответ, но после нескольких часов работы у меня есть ответ!

Нам нужно:

NuGet (лучше, чем копирование DLL из файла программы)

С NuGet мы устанавливаем:

EFCodeFirst

SqlServerCompact

EFCodeFirst.SqlServerCompact

Проблема заключалась в том, что EF нужна еще одна dll для SQL CE 4 (System.Data.SqlServerCe.Entity.dll), и нам нужно поместить некоторую конфигурацию в web.config:

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

С этим все работает. Я видел 5 разных ошибок, поэтому нам нужно:

2 dll из SQL CE 4, dll EF, конфиг в web.config и нативный dll (из каталога пакетов, куда NuGet загружает библиотеку).

Похоже, что конфигурация web.config указывает на конкретную версию SQL CE .dll, и версия пакета RTM отличается. Я не могу найти конкретную версию, поэтому я использую .dll от NuGet.

Вот и все, SQL CE 4 + EF на удаленном хосте.

21 голосов
/ 25 марта 2011

Просто используйте меню "Project / Add Deployable Dependencies ..." Я не уверен, что это только Visual Studio 2010 SP 1.

4 голосов
/ 31 января 2011

Вы должны убедиться, что у вас есть собственные библиотеки SQL CE 4.0 в вашей личной директории приложения (например, \ bin) в дополнение к управляемой.

Скопируйте их из "C: \ Program Files (x86) \ Microsoft SQL Server Compact Edition \ v4.0 \ Private \ amd64" (или x86, если у вас 32-разрядное приложение).

Также может быть целесообразно развернуть MSVCR90.dll, и это тоже манифест. Ознакомьтесь с документацией в C: \ Program Files (x86) \ Microsoft SQL Server Compact Edition \ v4.0 для получения дополнительной информации о необходимых DLL и перераспределении.

2 голосов
/ 31 января 2011

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

Я бы порекомендовал сделать Build-> Очистить всеЗатем убедитесь, что все ваши ссылки относятся к новым, правильным DLL, а затем убедитесь, что ни один из старых файлов или ссылок не остался нигде в вашем проекте.Попытайтесь восстановить, как только это будет сделано.

Поскольку это проект "Здравствуй, мир", может быть проще начать с нуля новый проект и включить в него правильные dll.

1 голос
/ 03 мая 2012

У меня была такая же проблема.Пытаюсь запустить приложение SQL CE 4.0 с первым кодом в моей учетной записи goDaddy.

Я начал возиться с различными DLL-файлами на основе приведенного выше потока и других уроков, но, похоже, ничего не получалось.Чего-то не хватало.Затем я прочитал об ответе Add Deployable Dependencies .

Я сделал это, что создало папку _bin_deployableAssemblies.Затем я удалил все из папки bin, кроме DLL моего основного проекта, и скопировал все из _bin_deployableAssemblies в папку bin.

Я вычистил все в папке bin в моем приложении goDaddy и повторно синхронизировал файлы.Это сработало.Приложение загружается, и если я делаю codefirst изменения в классах, dbcontext воссоздает базу данных для меня.Конечно, я не хочу этого в производстве, но я хотел знать, что все работает.

Я пытался использовать учебник ASP о развертывании приложения MVC в среде хостинга (в качестве примера они используют хостинг Cytanium), но у меня не получилось на GoDaddy.Мне пришлось копировать файлы вручную.

Спасибо всем.Это был огромный шаг для меня, чтобы чувствовать себя комфортно, продолжая в MVC и EF.

1 голос
/ 21 сентября 2011

попробуйте установить SQL CE вручную.

http://www.microsoft.com/download/en/details.aspx?id=17876

Удачи.

...