【问题标题】:Is it possible to Truncate a table or multiple table using Dapper?是否可以使用 Dapper 截断一个表或多个表?
【发布时间】:2018-12-22 11:08:06
【问题描述】:

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

我的尝试:

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

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

【问题讨论】:

  • 您尝试此操作时发生了什么?它失败了吗?如果有,怎么做?
  • @Mureinik 当我执行它时。它变成-1
  • 我不知道什么是“Dapper”,但截断表是通过一个简单的查询完成的,可以由任何外部应用程序执行。 SSMS 与您开发的任何应用程序没有区别。与您可以使用 SSMS 执行相同,您可以使用“SQL Server Operation Studio”或您开发的任何应用程序执行......只要您有权限

标签: c# sql-server tsql dapper


【解决方案1】:

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

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

还有Dapper的Execute方法returns the rows affected

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

编辑以添加

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

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

猜你喜欢
  • 1970-01-01
  • 2018-08-20
  • 2015-07-25
  • 1970-01-01
  • 2020-03-19
  • 2011-06-09
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多