我试图重新编写一些代码以使用Dapper,以便可以轻松使用参数。我正在尝试在Oracle数据库上执行UPDATE语句。将要更新的IDs
列表作为List<int>
作为参数传递。我想为传入的每个IDs
更新一个字段。以下是我所拥有的:
OracleConnection connection = ... // set earlier
public int IncreaseProcessCount(List<int> ids)
{
var rowsAffected = connection.Execute(@"UPDATE TABLE SET PROCESSED_COUNT = PROCESSED_COUNT + 1 WHERE ID IN @ids", new { ids });
return rowsAffected;
}
在使用Dapper之前,执行语句可以正常工作。现在我得到以下错误:
ORA-00936:缺少表达式。
我当前的解决方案基于以下帖子:
根据阿米特(Amit)的回答,以下是我最后要做的工作。我必须用匿名对象包装要传递的集合。
connection.Execute("UPDATE TABLE SET PROCESSED_COUNT = PROCESSED_COUNT+ 1 WHERE ID IN :ids",
new { ids });