是否可以使用Dapper截断一个表或多个表?

时间:2018-07-14 06:10:12

标签: c# sql-server tsql dapper

我想知道是否有可能使用Dapper运行像Truncate Table x这样的TSQL查询?

我尝试过的事情:

using (var con = DB.Connection)
{
    con.Open();
    var ret = con.Execute("Truncate Table [Y].[X]");
}

PS。我不想为其创建一个SP。

1 个答案:

答案 0 :(得分:3)

您似乎认为返回-1表示有问题。但是根据the documentation Truncate

  

从表或表的指定分区中删除所有行,而不记录单个行的删除。

还有Dapper的Execute方法returns the rows affected

所以-1在我看来是合理的。

编辑以添加

在进一步研究了GitHub中的源代码之后,Dapper的Execute扩展在幕后调用了SqlMapper的ExecuteImpl,该方法(由于其调用方式只能走两种;但基本上都是双向的)最终返回IDbCommand的ExecuteNonQuery的结果。因此,有了这个难题,马丁·史密斯({@ 3}}的信息就适用了:

  

对于UPDATE,INSERT和DELETE语句,返回值是该命令影响的行数。对于所有其他类型的语句,返回值为-1