【发布时间】:2020-01-13 17:04:52
【问题描述】:
我正在通过这种方法调用我的程序:
public async Task<IEnumerable<Algorithm>> GetAlgorithmsByNameAsync(IEnumerable<string> names)
{
var parameters = new DynamicParameters();
parameters.Add("@names", names);
var connection = _connection.GetOpenConnection();
return await connection.QueryAsync<Algorithm>("GetAlgorithmsByName", parameters, commandType: CommandType.StoredProcedure);
}
我的程序如下所示:
CREATE TYPE [dbo].[StringList] AS TABLE(
[Item] [NVARCHAR](MAX) NULL
);
--PROCEDURE HERE--
CREATE PROCEDURE GetAlgorithmsByName
@names StringList READONLY -- my own type
AS
BEGIN
SELECT ALgorithmId, Name From Algorithms WHERE Name IN (SELECT Item FROM @names)
END
从上面的代码,我得到一个错误:
“GetAlgorithmsByName 过程或函数指定的参数过多。”
我做错了什么?如何使用 dapper 将IEnumerable<string> 传递给存储过程?
【问题讨论】: