EntLib 4.1 с Oracle .DataAccess.Client Ошибка приведения GetStoredProcCommand к Oracle .DataAccess.Client.OracleCommand - PullRequest
0 голосов
/ 23 января 2020

Я настроил свой EntLib 4.1 следующим образом:

<dataConfiguration defaultDatabase="Oracle">
<providerMappings>
  <add databaseType="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase, Microsoft.Practices.EnterpriseLibrary.Data"
    name="Oracle.DataAccess.Client" />
</providerMappings>

С моей строкой подключения providerName = "Oracle .DataAccess.Client", я получаю объект Command следующим образом:

Microsoft.Practices.EnterpriseLibrary.Data.Database database = DatabaseFactory.CreateDatabase("Oracle");
Oracle.DataAccess.Client.OracleCommand commandObj = (OracleCommand)database.GetStoredProcCommand(spName)

Когда я нажимаю эту строку кода, я получаю сообщение об ошибке: «Невозможно привести объект типа System.Data.OracleClient.OracleCommand к типу Oracle .DataAccess. Client.OracleCommand "Почему EntLib все еще использует System.Data.OracleClient, когда я указал в конфигурации, чтобы использовать Oracle .DataAccess.Client? Кто-нибудь еще сталкивался с этим или я что-то упустил?

1 Ответ

0 голосов
/ 23 января 2020

Я переключился на использование Oracle .ManagedDataAccess.Client и вместо этого установил Oracle .ManagedDataAccess через Nuget. Вот конфигурация app.config:

   <configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.18.3, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    </configSections>

    <dataConfiguration>
    <providerMappings>
      <add name="Oracle.ManagedDataAccess.Client" databaseType="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.18.3, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    </providerMappings>
  </dataConfiguration>

    <connectionStrings>
    <add name="Oracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=user;Password=pass;Integrated Security=no"
      providerName="Oracle.ManagedDataAccess.Client" />
    </connectionStrings>

Вот код C#:

 DbProviderFactory providerFactory = DbProviderFactories.GetFactory("Oracle.ManagedDataAccess.Client");
Database database = new Microsoft.Practices.EnterpriseLibrary.Data.GenericDatabase("Oracle", providerFactory);
 OracleCommand commandObj = null;

using (commandObj = (OracleCommand)database.GetStoredProcCommand(spName))
{
    commandObj.CommandType = CommandType.StoredProcedure;
}

Я получил ошибку приведения, но теперь я застрял в строке подключения, как это терпит неудачу с ошибкой: "Строка соединения не правильно сформирована"

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