Обновление EntLib 4.1 до 5 с Oracle.DataAccess.Client - PullRequest
4 голосов
/ 30 апреля 2010

Я обновляю проект с EntLib 4.1 до EntLib 5. Я просмотрел Руководство по миграции, изменил все ссылки и обновил все файлы конфигурации, чтобы указать на EntLib 5. Все работало нормально, принимая доступ к базе данных Oracle. С файлом конфигурации:

<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
  </configSections>
  <dataConfiguration defaultDatabase="prod">
    <providerMappings>
      <add databaseType="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase, Microsoft.Practices.EnterpriseLibrary.Data"
        name="Oracle.DataAccess.Client" />
    </providerMappings>
  </dataConfiguration>
  <connectionStrings>
    <add name="prod" connectionString="Data Source=dev;User Id=dev;Password=dev;"
      providerName="Oracle.DataAccess.Client" />
  </connectionStrings>
</configuration>

, который работал с 4.1, все вызовы на DatabaseFactory.CreateDatabase() завершаются неудачно с:

System.InvalidOperationException: The type Database cannot be constructed. You must configure the container to supply this value.

Если я заменю Oracle.DataAccess.Client на Microsoft System.Data.Oracleclient, все снова будет работать, но не наполнено прелестью ODP.net. Кто-нибудь знает, как заставить это работать с EntLib 5?

Cheers, MLK

Ответы [ 3 ]

5 голосов
/ 14 мая 2010

Похоже, что установщик Oracle иногда забывает о фабрике провайдера базы данных, установленной в machine.config. Чтобы это исправить, необходимо указать следующее: app.config или machine.condig.

<system.data>
<DbProviderFactories>
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"
description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>

Я думаю, что эта работа в EntLib4 заключается в том, что EntLib4 использует предыдущую версию клиента Oracle (я думаю, 10.2.0.1. Нумерация Oracle странная).

1 голос
/ 20 марта 2012

Используйте конфигурацию, показанную в этой ссылке .

или проверьте App.config из примера, найденного в конце поста по той же ссылке.

0 голосов
/ 13 декабря 2010

используйте ODP.NET 11g для фреймворка 4.

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