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

Val*_*rie 2 c# t-sql sql-server dapper

我想知道是否可以像Truncate Table x使用 Dapper一样运行 TSQL 查询?

我试过的:

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

附注。我不想为它创建一个 SP。

Ric*_*imo 5

您似乎认为返回 -1 表示有问题。但根据文档 Truncate

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

Dapper 的Execute方法返回受影响的行

所以 -1 对我来说似乎是合理的。

编辑添加

在对 GitHub 中的源代码进行进一步调查后,Dapper 的Execute扩展在后台调用了 SqlMapper 的 ExecuteImpl,它(由于它的调用方式只能有两种方式;但基本上都是两种方式)最终返回 IDbCommand 的ExecuteNonQuery. 因此,有了这块拼图,Martin Smith 来自MSDN 的 ExecuteNonQuery的信息适用:

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