【问题标题】:ODP.NET in Microsoft Enterprise Library 6.0Microsoft Enterprise Library 6.0 中的 ODP.NET
【发布时间】:2013-07-23 14:44:56
【问题描述】:

关于这个问题有几个问题,但没有一个得到真正的回答。

基本上 - 当前是否有用于当前使用的 enlib (6.0) 的 ODP.NET 实现?还是我必须为 ODP.NET 编写映射/自定义 DAO?

通用数据库只能让我到目前为止,它与 Oracle 存储过程持平(使用 GenericDatabase 的连接不支持可怕的“参数发现”。您必须明确指定参数,或将连接配置为使用派生类型来自支持参数发现的数据库错误)

我知道 entlibcontrib 项目 - 但这似乎被搁置/死亡,因为它自 2011/entlib 5.0 以来没有新的发布。

任何关于 entlib 的自定义 DAO 开发的指针或建议,将不胜感激。

【问题讨论】:

    标签: enterprise-library odp.net daab enterprise-library-6


    【解决方案1】:

    这是我们对此的官方立场:

    如果您使用的是 Oracle 数据库,则可以使用企业库中包含的 Oracle 提供程序和 ADO.NET Oracle 提供程序,这需要您引用或添加程序集System.Data.OracleClient.dll。但是,请记住 OracleClient 提供程序在 .NET Framework 4.0 版中已弃用,并且在 Enterprise Library 6 中已弃用对此提供程序的支持。尽管对 OracleClient 提供程序的支持仍包含在 Enterprise 中库 6,对于未来的开发,您应该考虑选择使用不同 Oracle 驱动程序的数据库类的不同实现。

    我还没有遇到过用于 EntLib6 的 ODP.NET 实现。如果您最终更新了 EntLibContrib v5.0 上可用的版本,请将其发布到 contrib 站点以供其他人受益。应该相当简单,在 v6 中对 DAAB 没有重大更改。

    我希望我能给你一个更好的答案,但归根结底,这取决于发布故事的优先级,而这个故事的堆栈等级还不够高,我的团队无法接受。

    【讨论】:

    • 这个答案很好。只需要对这个问题进行“官方”澄清。我想出的任何东西(我必须)都会放回 EntLibContrib。
    • 任何使用 ODP.net - EnterpriseLibrary 的完整源代码示例? EntLib 贡献? ODP.NET 有新版本,完全托管的 .NET。 stackoverflow.com/a/18193544/206730
    【解决方案2】:

    我们正在使用 ODP.NET 和企业库中的 GenericDatabase 对象成功连接到 Oracle 11g。

    我们在 Oracle 包中运行存储过程时遇到了问题(忘记了确切的错误,但我们在实际使用之前处理命令时遇到了一些问题),我们对企业库进行了小幅更改以处理它。

    在SprocAccessor.cs中,我们修改了

    public override IEnumerable<TResult> Execute(params object[] parameterValues)
    

    看起来像这样

    public override IEnumerable<TResult> Execute(params object[] parameterValues)
    {
        using (DbCommand command = Database.GetStoredProcCommand(procedureName))
        {            
            parameterMapper.AssignParameters(command, parameterValues);                
            //return base.Execute(command);  Removed 
    
            //foreach added by ngpojne.  This allows the command to be used before it is disposed of.
            foreach (TResult result in base.Execute(command))
            {
                yield return result;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多