Отменить EntityFramework 6.0.0.0 до 5.0.0.0

91
13

Я пытаюсь настроить ASP.NET 4.5 с помощью WebAPI, используя PostgresSQL и Entity framework. Я обнаружил, что есть две отдельные сборки драйвера Postgres Npgsql. Версия 2.0.12.0 поддерживает EF 5.0.0.0. Существует отдельная сборка (которая соответствует документации, неправильно обозначенной как 2.0.13.91), поддерживающей EF 6.0.0.0. Мне все равно, какие версии я использую до тех пор, пока я могу заставить их работать правильно. Я получаю сообщение об ошибке, пытающееся использовать EF 6.0.0.0, и в настоящее время я пытаюсь заставить 5.0.0.0 работать (ошибка 6.0.0.0 - отдельная проблема, и я буду размещать об этом отдельно, если это необходимо).


Теперь проблема заключается в том, что, по-видимому, из-за того, что я уже установил EF 6.0.0.0 в один момент, я не могу полностью отказаться от EF 5.0.0.0. Я вернул все ссылки, которые могу найти, и у меня установлен только EF 5.0.0.0, но когда я развертываю приложение веб-API или пытаюсь выполнить код, использующий драйвер Npgsql, я получаю:


A first chance exception of type 'System.IO.FileLoadException' occurred in System.Data.Entity.dll
A first chance exception of type 'System.IO.FileLoadException' occurred in EntityFramework.dll
iisexpress.exe Error: 0 : Operation=ReflectedHttpActionDescriptor.ExecuteAsync, Exception=System.IO.FileLoadException: Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
at Npgsql.NpgsqlFactory.GetService(Type serviceType)
at System.Data.Common.DbProviderServices.GetProviderServices(DbProviderFactory factory)

Я не знаю, откуда идет спецификация 6.0.0.0. Я обновил все спецификации версии в web.config. Я удалил и переустановил 5.0.0.0. Я даже удалил и переустановил пакет обновления для Visual Studio для MVC4. Пакет EntityFramework, указанный в Nuget, 5.0.0.0. Все ссылочные сборки в пакете указывают EF 5.0.0.0. Я восстановил Npgsql и зарегистрировал восстановленные Npgsql.dll и Mono.Security.dll с помощью gacutil.exe. Что указывает на 6.0.0.0 и как его вернуть?


TL; DR


Расположенная сборка 5.0.0.0, что является правильным. По какой-то причине он ищет 6.0.0.0, и я не могу понять, почему.

спросил(а) 2013-10-18T01:15:00+04:00 6 лет, 11 месяцев назад
1
Решение
59

У меня была такая же проблема, и, к счастью, тестовая версия была развернута на другом сервере до моего случайного обновления (и последующего понижения) до EF6. Итак, я вытащил файл конфигурации с этого сервера и смог просто перезаписать конфигурацию, которая вызывала проблемы. После того, как я начал работать, я сравнил версию с сервера с той, которую я получил локально, и заметил, что на моем компьютере есть раздел поставщиков, который не был на сервере (см. Ниже). Когда это было удалено, это сработало для меня. Неясно, если это просто случай понижения, который не выполняет полную очистку.


<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />

<!-- This providers section appeared after the accidental upgrade to EF6 once it was removed, application no longer expected EF6 dlls -->
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>

Я нахожусь в середине развертывания, поэтому извинения за этот ответ являются лишь анекдотическими. Надеюсь, это сработает для вас!

ответил(а) 2013-11-07T15:58:00+04:00 6 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема