gpt4 book ai didi

c# - 将 Dapper 与 '?' 一起使用

转载 作者:太空宇宙 更新时间:2023-11-03 16:16:47 25 4
gpt4 key购买 nike

我正在尝试使用 Dapper 与 DB2 服务器通信。 DB2 服务器不支持开箱即用的命名参数。它希望查询中的每个参数都有一个问号。有没有办法用 Dapper 支持这个?也许 Dapper 可以在调用查询之前用 ? 替换所有 @Name 内容?如果是这样,Dapper 是否按顺序生成参数?

如果没有,似乎较新的 DB2 客户端驱动程序支持命名参数,但默认情况下它是关闭的。我不知道如何打开它。我尝试将该参数添加到客户端的 db2cli.ini [COMMON] 部分,但行为没有任何变化。那是针对 OleDB 驱动程序的。

更新:然后我尝试了 .NET 驱动程序。那个好像解析了变量名,但是运行的时候还是报了个奇怪的错误:

{"ERROR [07004] [IBM][DB2/NT64] SQL0313N The number of variables in the EXECUTE statement, the number of variables in the OPEN statement, or the number of arguments in an OPEN statement for a parameterized cursor is not equal to the number of values required."}

我的声明是这样的:

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
});
}

关于c# - 将 Dapper 与 '?' 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15580001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com