Ошибка EntityFramework: поставщик не возвратил экземпляр ProviderManifest

Мой проект использует ASP.NET MVC4 в С# с Visual Studio 2012 для Web Express.

При компиляции моего проекта у меня есть следующая ошибка:

Поставщик не вернул экземпляр ProviderManifest. Не удалось определить версию хранилища; требуется правильное подключение к хранилищу или подсказка версии.

После многих часов поиска я считаю, что ошибка связана с Entity Framework. Я также нашел работу для этой ошибки здесь: http://forums.devart.com/viewtopic.php?f=32&t=25748

Обходной путь предполагает, что я изменяю поле ProviderManifestToken="2012" на ProviderManifestToken="2008" в моем файле .edmx.

После этого ошибка исчезнет. Но тогда у меня возникает другая проблема, когда я запускаю проект, ошибка времени выполнения:

Не удалось загрузить файл или сборку "Microsoft.Data.Edm" или одну из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

=== Информация о состоянии предварительной привязки ===
LOG: DisplayName = Microsoft.Data.Edm
(Partial)
WRN: информация о частичной привязке была предоставлена ​​для сборки:
WRN: Название сборки: Microsoft.Data.Edm | Идентификатор домена: 2
WRN: частичное связывание происходит, когда предоставляется только часть отображаемого имени сборки.
WRN: Это может привести к тому, что связующее загрузит неправильную сборку.
WRN: рекомендуется предоставить полностью определенный текстовый идентификатор для сборки,
WRN: состоит из простого имени, версии, культуры и токена открытого ключа.
WRN: см. Технический документ http://go.microsoft.com/fwlink/?LinkId=109270 для получения дополнительной информации и общих решений этой проблемы.
LOG: Appbase = file:///C:/Users/Pedro/Documents/Visual Studio 2012/Проекты/Dockis/Разработка/Dockis/Dockis/
LOG: Initial PrivatePath = C:\Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\bin
Вызов сборки: (Неизвестно).

LOG: эта привязка запускается в контексте нагрузки по умолчанию.
LOG: Использование файла конфигурации приложения: C:\Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\web.config
LOG: Использование файла конфигурации хоста: C:\Users\Pedro\Documents\IISExpress\config\aspnet.config
LOG: Использование файла конфигурации машины из C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.

LOG: политика не применяется к ссылке в это время (частное, пользовательское, частичное или привязку к базе данных).
LOG: попытка загрузки нового файла URL:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm.DLL.
LOG: попытка загрузки нового файла URL:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm/Microsoft.Data.Edm.DLL.
LOG: попытка загрузки нового файла URL:///C:/Users/Pedro/Documents/Visual Studio 2012/Projects/Dockis/Development/Dockis/Dockis/bin/Microsoft.Data.Edm.DLL.
LOG: Использование файла конфигурации приложения: C:\Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\web.config
LOG: Использование файла конфигурации хоста: C:\Users\Pedro\Documents\IISExpress\config\aspnet.config
LOG: Использование файла конфигурации машины из C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Перенаправление найдено в файле конфигурации приложения: 5.6.0.0 перенаправлено на 5.6.1.0.
LOG: Послеполитическая ссылка: Microsoft.Data.Edm, Version = 5.6.1.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35
LOG: попытка загрузки нового файла URL:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm.DLL.
LOG: попытка загрузки нового файла URL:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm/Microsoft.Data.Edm.DLL.
LOG: попытка загрузки нового файла URL:///C:/Users/Pedro/Documents/Visual Studio 2012/Projects/Dockis/Development/Dockis/Dockis/bin/Microsoft.Data.Edm.DLL.
WRN: сравнение названия сборки привело к несоответствию: номер сборки
ERR: Не удалось завершить настройку сборки (hr = 0x80131040). Исследование прекращено.

Трассировка стека:

[FileLoadException: Could not load file or assembly 'Microsoft.Data.Edm' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
   System.Reflection.Assembly.Load(String assemblyString) +28
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
   System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +521

[HttpException (0x80004005): Could not load file or assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9950728
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Dockis - это название проекта. Увидев эту ошибку, я провел несколько часов, полагая, что ошибки лежат где-то в версиях используемого пакета. Однако, похоже, это не так, поскольку большинство пакетов обновлены, и между ними, похоже, нет конфликтов.

Следовательно, я верю, что проблема заключается в версии EntityFramework, но я не в курсе, как это исправить.

Я все уши, если у вас есть предложения, я буду им благодарен.

Ответы

Ответ 1

По-видимому, проблема была в версии Visual Studio, которую я использовал. Если ты спросишь меня, подумай. После удаления Visual Studio Web Express 2012 и установки Visual Studio 2013 Ultimate все стало работать так, как должно.

Ответ 3

Это происходит потому, что VS2012 не поддерживает sql 2012 и выше. Измените значение ProviderManifestToken на 2008 год

Ответ 4

Это работало для меня без изменения ProviderManifestToken = "2012" до 2008 в файле .edmx.

в .edmx файле, я изменил следующее значение с True на False.

<edmx:DesignerProperty Name="UseLegacyProvider" Value="False" /> 

"Поставщик не вернул экземпляр ProviderManifest". ошибка исчезла.

Ответ 5

Не уверен, что это проблема с Visual Studio. Или просто структура сущностей, которая неспособна правильно распознать провайдера. Я избавился от ошибки, отредактировав файл edmx и заменив 2012 на 2008 в <Schema ProviderManifestToken="2008" ...>

Ответ 6

Замена 2012 с 2008 в ProviderManifestToken="2012" в .edmx файле работала для меня.

  • Замените 2012 год на 2008 год в ProviderManifestToken="2012"
  • Сохраните файл .edmx
  • Очистить и восстановить решение.

Ответ 7

  • пойдите там, где вы планируете проект (открыть Solution explorer. нажмите на решение и нажмите "Открыть папку в проводнике файлов".
  • открыть файл EDMX с помощью блокнота и изменить   ProviderManifestToken = "2012" для ProviderManifestToken = "2008". спасти   это

  • создайте свое решение

Ответ 8

Для меня это было потому, что, когда я использовал TeamCity для деинсталляции моего сайта, он изменил файл web.config.

Он удалил connectionString и добавил debug = true в компиляцию System.Web

<system.web>
    <customErrors mode="Off" />
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576" />
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
  </system.web>

Я manuel исправил файл web.config, и теперь он снова работает для меня.