Какие шаги нужно предпринять, чтобы мой SQL Server CE работал на моем хост-компьютере? - PullRequest
2 голосов
/ 09 марта 2012

Редактировать: Мой вопрос сводится к тому, какие шаги мне нужно предпринять для создания веб-приложения, использующего SQL Server CE со средним уровнем доверия?

Я скопировал версию для настольного компьютера в каталог binпрежде чем опубликовать это, но я уверен, что есть еще шаги, которые не сработали.

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

Веб-приложение: MVC 3, созданный с VS 2010

Все отлично работает на моем компьютере разработчика.

После прочтения этот пост , я избавился от своих ссылок и скопировал SqlServerCE.dll и SqlServerCe.Entity.dll в каталог bin.

Это изменило ошибку с

Не удалось загрузить файл илисборка 'System.Data.SqlServerCe, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91' или одна из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040)

к текущему.

Я скопировал SqlServerCE.dll из папки на рабочем столе, чтобы я мог работать со средним доверием.

Из моегоФайл Web.config:

  `       <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
        <assemblyIdentity name="System.Data.SqlServerCe" 
                          publicKeyToken="89845dcd8080cc91" culture="neutral"/>
        <bindingRedirect oldVersion="4.0.0.0-4.0.0.1" newVersion="4.0.0.1"/>

      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <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>`

Редактировать: Спасибо всем.

У меня есть SqlServerCompact.4.0.8852.1 в моем каталоге пакетов.

Я удалил SqlServerCE.dll и SqlServerCe.Entity.dll из моего каталога bin, так как они есть в моих пакетах.Я скопировал собственные двоичные файлы в свою корзину (и они включены в проект), но все равно получаю следующее сообщение:

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

Мне не удалось использовать предложенный вами пакет nuget, поскольку у меня установлена ​​более новая версия Entity Framework, и он откатил установку.

Я готов начать с нового проекта, если кто-то может порекомендовать установку SQL Server CE, которая будет работать в среде Medium Trust на сервере общего хостинга.

Это то, что я делал (и делаюне работает), когда я создал свой проект.

а.Install-Package SqlServerCompact б.Install-Package System.Web.Providers c.Установить пакет EntityFramework d.Install-Package EntityFramework.SqlServerCompact

1 Ответ

3 голосов
/ 09 марта 2012

Проверьте в каталоге пакетов, является ли ваша версия SqlCompact этой версией: SqlServerCompact.4.0.8852.1

Если да, вам нужно скопировать файлы в package \ SqlServerCompact.4.0.8852.1 \ NativeBinaries, потому что они разные.

Но эта версия не работает со средним уровнем доверия, поскольку они изменили версию SqlCompact на 4.0.0.1 и только 4.0.0.0 авторизован по умолчанию в файле конфигурации .NET 4.Если вам нужна версия со средним уровнем доверия, попробуйте эту версию https://nuget.org/packages/EntityFramework.SqlServerCompact/4.1.8482.2

...