簡體   English   中英

EntLib 6和ODP.NET-訪問器丟失參數

[英]EntLib 6 and ODP.NET - Accessor loses parameters

我敢肯定我不是第一個嘗試使用EntLib 6的訪問器來執行帶參數的Oracle SP的人。 當我使用MS上(已棄用的)OracleClient時,一切正常且繁瑣,但是當我切換到Oracle自己的ODP.NET(使用EntLibContrib 6)時,我開始收到臭名昭著的“錯誤數量或類型的參數來調用'TEST_PROCEDURE '”

這是我的代碼:

主要

var query = "TEST_PROCEDURE";

var accessor = _db.CreateSprocAccessor(
    query, 
    new OracleParamMapper(),
    new ColumnMapper<MyEntity>().Map()
);

var p1 = new OracleParameter("param1", OracleDbType.Varchar2, 1);
p1.Direction = ParameterDirection.Input;
p1.Value = "T";

var p2 = new OracleParameter("param2", OracleDbType.RefCursor);
p2.Direction = ParameterDirection.Output;

return accessor.Execute(p1, p2);

OracleParamMapper

public class OracleParamMapper : IParameterMapper
{
    public void AssignParameters(DbCommand command, object[] parameterValues)
    {
        ((OracleCommand)command).BindByName = true;

        foreach (var item in parameterValues)
        {
            command.Parameters.Add(item);
        }
    }
}

調用了此映射器,我可以看到參數已正確添加到集合中,但是由於一些不明智的原因,在調用Execute時它們似乎消失了。

儲存程序

PROCEDURE TEST_PROCEDURE (param1  IN VARCHAR2, param2  IN OUT SYS_REFCURSOR);

有人能做這項工作嗎? 提前致謝。

好吧,現在正在工作。 實際上,答案一直都在那兒。 我要做的就是使用EntLibContrib庫提供的類,瞧!

萬一有人EntLibContrib.Data.OdpNet.OracleDatabase這本書,只需看看EntLibContrib.Data.OdpNet.OracleDatabase類中的CreateOracleSprocAccessor()方法。 干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM