Подтвердить что ты не робот

Использование SQL Server CE 4 на удаленном хосте с MVC 3

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

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

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

На localhost работает как ожидалось

У меня есть:

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

как connectionString.

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

У меня больше нет идей. 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. Подробнее см. Статью KB 974247.

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

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

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

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

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

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

4b9b3361

Ответ 1

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

Нам нужно:

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, EF dll, config в файле web.config и родной dll (из каталога пакетов, где NuGet загружает библиотеку).

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

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

Ответ 2

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

Ответ 3

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

Скопируйте их из "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 и перераспределении.

Ответ 4

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

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

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

Ответ 6

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

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

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

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

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

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