使用Dapper與'?'

c# dapper db2

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

如果沒有,似乎較新的DB2客戶端驅動程序支持命名參數,但默認情況下它是關閉的。我無法弄清楚如何打開它。我嘗試將該參數添加到客戶端上的db2cli.ini [COMMON]部分,但行為沒有變化。那是OleDB驅動程序。

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

{“ERROR [7] [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 with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因