我正在尝试使用 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)
插入算作执行吗?据我所知,我在查询中有四个参数,在使用的命令对象中有四个。(我是SqlMapper.cs
直接使用的,可以在调试器中看到一切。)