«Поставщик ADO.NET с инвариантным именем Devart.Data.Oracle» не зарегистрирован ни в файле конфигурации компьютера, ни в приложении. - PullRequest
0 голосов
/ 10 мая 2019

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

Вот моя настройка Web.Config:

<connectionStrings>
  <add name="ADOEntities" connectionString="metadata=res://*/ADOModel.csdl|res://*/ADOModel.ssdl|res://*/ADOModel.msl;provider=Devart.Data.Oracle;provider connection string=&quot;User Id=dbUser;Password=*****;Server=oracleserver;Persist Security Info=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

Все работает нормально на моей машине (sic) , но когда я попытался настроить ws на качественном сервере, я получил ошибку в заголовке.

1 Ответ

2 голосов
/ 10 мая 2019

Я заработал, выполнив действия, описанные в этой ссылке ADO.NET .В частности,

Необходимо удалить регистрацию defaultConnectionFactory и добавить регистрацию поставщика Entity Framework, зарегистрировав ее в разделе entityFramework

Итак, строка defaultConnectionFactory должен идти

<entityFramework>
  <providers>
    <provider invariantName="Devart.Data.Oracle" type="Devart.Data.Oracle.Entity.OracleEntityProviderServices, Devart.Data.Oracle.Entity.EF6, Version=9.6.696.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
  </providers>
</entityFramework>

Затем добавьте раздел System.Data .В моем случае это выглядит так:

  <system.data>
    <DbProviderFactories>
      <remove invariant="Devart.Data.Oracle" />
      <add name="dotConnect for Oracle" invariant="Devart.Data.Oracle" description="Devart dotConnect for Oracle" type="Devart.Data.Oracle.OracleProviderFactory, Devart.Data.Oracle, Version=9.6.696.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
    </DbProviderFactories>
  </system.data>  

Если это все еще не помогает вам - и не помогло - попробуйте добавить следующую строку в ваш класс контекста:

[DbConfigurationType(typeof(Devart.Data.Oracle.Entity.OracleEntityProviderServicesConfiguration))] //Add this line
public partial class ADOEntities : DbContext

Возможно, вы захотите создать частичный класс, если вы используете ADO, Devart или другую автоматически сгенерированную модель сущностей, чтобы избежать наличия этого фрагмента кода в автоматически сгенерированном классе

...