我想知道是否有可能使用Dapper运行像Truncate Table x
这样的TSQL查询?
我尝试过的事情:
using (var con = DB.Connection)
{
con.Open();
var ret = con.Execute("Truncate Table [Y].[X]");
}
PS。我不想为其创建一个SP。
答案 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