簡體   English   中英

在Dapper中使用'?'

[英]using Dapper with '?'

我正在嘗試使用Dapper與DB2服務器進行通信。 DB2服務器不支持現成的命名參數。 它期望查詢中的每個參數都有一個問號。 Dapper有什么方法可以支持這一點嗎? 也許Dapper可以將所有@Name替換為? 在調用查詢之前? 如果是這樣,Dapper是否按順序生成參數?

如果不是,則似乎較新的DB2客戶端驅動程序支持命名參數,但默認情況下處於關閉狀態。 我不知道如何打開它。 我嘗試將該參數添加到客戶機上的db2cli.ini [COMMON]部分,但行為沒有變化。 那是針對OleDB驅動程序的。

更新:然后,我嘗試了.NET驅動程序。 那個似乎解析了變量名,但是運行時我仍然收到一個奇怪的錯誤:

{“ ERROR [07004] [IBM] [DB2 / NT64] SQL0313N對於參數化游標,EXECUTE語句中的變量數,OPEN語句中的變量數或OPEN語句中的參數數不等於所需的值數。“}

我的陳述如下:

INSERT INTO XD.ALERT (PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, :Level, :AlertID, :AlertDesc, :DateTime)

INSERT算作EXECUTE嗎? 據我所知,查詢中有四個參數,正在使用的命令對象中有四個參數。 (我直接使用SqlMapper.cs ,並且可以在調試器中看到所有內容。)

您可以嘗試以下方法:

    public void SaveAlert(int? level, int? alertId, string alertDesc, DateTime date)
    {            
        _conn.Execute("INSERT INTO XD.ALERT(PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, @Level, @AlertID, @AlertDesc, @DateTime)",                
            new {
                Level = level,
                AlertId = alertId,
                AlertDesc = alertDesc,
                DateTime = date
            });
    }

暫無
暫無

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

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