Развертывание приложения, использующего Oracle и EF, без установки ODP.NET Managed Access на рабочем сервере. - PullRequest
0 голосов
/ 27 апреля 2018

Я разработал приложение, которое сначала использует EF db и Oracle db, и оно хорошо работает в локальной среде разработки. Сначала мне не нравится подход к установке чего-либо в GAC, в данном случае это ODAC, который содержит управляемый доступ к данным ODP.NET, и я решил использовать его версию NuGet в моем приложении. Но это не удалось, когда я попытался сгенерировать EDMX с помощью EF db. Поэтому я продолжил и следовал этой инструкции при разработке приложения для работы с базой данных EF и базой данных Oracle.

Проблема возникла, когда мне пришлось развернуть ее в рабочей среде, и менеджер не позволил установить на этом сервере управляемый доступ к данным ODP.NET. Я пытался вручную скопировать Oracle.ManagedDataAccess.dll в производственную среду, но все равно не получилось.

Это исключение:

System.ArgumentException: поставщик ADO.NET с инвариантным именем
Oracle.ManagedDataAccess.Client либо не зарегистрирован в файл конфигурации компьютера или приложения, или не удалось загрузить. Увидеть внутреннее исключение для деталей.

InnerException: System.ArgumentException Сообщение: невозможно найти запрошенный поставщик данных .Net Framework. Возможно, он не установлен.

Это app.config:

<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <connectionStrings>
    <add name="theConnectionString" connectionString="" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
  </entityFramework>
</configuration>

Есть ли способ развернуть его, не устанавливая ничего на рабочий сервер?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...