当必须使用Dapper将数据表作为TVP传递给DB时,返回DataTable.AsTableValuedParameterSqlMapper.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/

10-12 19:34