Ошибка ODP.NET Не удалось найти запрошенный поставщик данных .Net Framework

Я пытаюсь разработать приложение ASP.NET MVC 4.0 с использованием Oracle 11g Express и платформы .NET 4.0. Я могу подключиться к БД с помощью поставщика ODP.NET, а также сгенерировать мой EDMX для базы данных. Что я могу'Сделать это - запросить базовую БД, используя структуру сущностей. При создании экземпляра моего DbContext с использованием сгенерированной connectionString Visual Studio я получаю следующую ошибку:

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

Тем не менее, он установлен потому, что

Я могу видеть DLL в GAC.Это упоминается в machine.config.На него ссылается мой проект.Я на самом деле использую его для генерации моего EDMX из базы данных.Я подтвердил, что ссылаюсь на правильную версию (4.112.3.0) везде

Я запускаю код локально на Cassini, и мое оборудование имеет 32-битную архитектуру, поэтому я предполагаю, что смогу использовать только 32-битную DLLс, так чтоЭто не проблема архитектуры.

Конкретный фрагмент кода таков:

public class MyContext : ObjectContext, IUnitOfWork
{
    public MyContext() 
    : base(ConfigurationManager
          .ConnectionStrings["OracleEntities"]
          .ConnectionString)//Connectionstring is verified
    {}
}

Пожалуйста, помогите мне, прежде чем я оставлю все, отрасту бороду и живу где-нибудь в горах.

РЕШЕНИЕ: Так как у меня нетЯ не видел никаких упоминаний о решении, яЯ упомяну это здесь для будущих поколений. Андрей ниже спросил о моем формате строки подключения, и хотя я был настроен, я пошел и посмотрел. Вот что я увидел:

metadata=res://*/OracleModel.csdl|res://*/
OracleModel.ssdl|res://*/
OracleModel.msl;
provider=provider=Oracle.DataAccess.Client;
provider connection string="DATA SOURCE=localhost:1521;
PASSWORD=xxx;PERSIST SECURITY INFO=True;USER ID=xxx

Теперь обратите особое внимание на линию

provider=provider=Oracle.DataAccess.Client;

Этодолжен, собственно, читай

provider=Oracle.DataAccess.Client;

иначе тыповторяет EF использовать [provider.dll], который неэто настоящая вещь. Также обратите внимание, что кажется, что свойство providerName элемента connectionString, кажется, было переопределено или проигнорировано.

ОБНОВЛЕНИЕ 2Если это по-прежнему не помогает, взгляните на machine.config. Вы должны увидеть следующий раздел:



  


Если <удалить инвариант = "Oracle.DataAccess.Client "/> присутствует, закомментируйте и попробуйте еще раз, в противном случае, если этоs не там, вставьте это и попробуйте снова.

Ответы на вопрос(8)

Ваш ответ на вопрос