当必须使用Dapper将数据表作为TVP传递给DB时,返回DataTable.AsTableValuedParameter
的SqlMapper.ICustomQueryParameter
方法有什么意义?
我可以像普通数据表一样将TVP发送到数据库,并执行查询。我不确定在它上面执行AsTableValuedParameter
还能买到什么。
例如这有效:
int rowsAffected = await conn.ExecuteAsync(
"MyProc",
new
{
myVar = (DataTable)GetThatDataTable(),
},
commandType: CommandType.StoredProcedure);
另外,还有一个问题,
typeName
方法中对AsTableValuedParameter
可选参数的需求是什么?没有它也可以正常工作。 最佳答案
在这种情况下,它可以正常工作,因为您正在使用存储过程。用户定义的类型需要来自某个地方,对于存储过程,该地方必须是:声明的参数类型可以在某个地方。
但是,dapper也可用于临时CommandText
查询。在这种情况下,如果没有此调用:没有类型名称,则调用将失败。对我来说重要的是,功能也支持CommandText
用法,因为这是一个非常常见的用例。
如果它对您没有问题,请执行以下操作:
关于c# - 了解SqlMapper.ICustomQueryParameter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48790227/