.net – 使用Oracle.DataAccess.Client将EntLib 4.1升级到5

我正在将项目从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.

如果我用Microsoft System.Data.Oracleclient替换Oracle.DataAccess.Client它会再次起作用,但是不满足于ODP.net的可爱性.有谁知道如何使用EntLib 5?

干杯,
   MLK

解决方法

它会导致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,PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>

我认为在EntLib4中工作的是EntLib4使用以前版本的Oracle客户端(我认为是10.2.0.1.Oracle编号很奇怪).

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...