4

我正在将一个项目从 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 一起使用?

干杯, Mlk

4

3 回答 3

5

似乎 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 编号是奇数)。

于 2010-05-14T09:04:56.393 回答
1

使用此链接中显示的配置。

或者,从同一链接的帖子末尾找到的示例中查看 App.config。

于 2012-03-20T14:12:07.953 回答
0

将 ODP.NET 11g 用于框架 4。

于 2010-12-13T08:57:26.933 回答