【问题标题】:Does it matter if con.execute() is called multiple times?con.execute() 是否被多次调用是否重要?
【发布时间】:2017-10-22 21:47:05
【问题描述】:

考虑以下(使用 dapper) 示例 1:

var query = @"INSERT INTO FOO (ID, Name) VALUES (1, 'Test')
INSERT INTO FOO (ID, Name) VALUES (2, 'ABC')";

using(var con = connection)
{
    con.Execute(query);
}

示例 2:

var queryOne = "INSERT INTO FOO (ID, Name) VALUES (1, 'Test')";
var queryTwo = "INSERT INTO FOO (ID, Name) VALUES (2, 'ABC')";

using(var con = connection)
{
    con.Execute(queryOne);
    con.Execute(queryTwo);
}

我试图了解执行 2 次插入的方式是否重要。据我了解,con 在 using 语句上打开,并在 using 语句退出时关闭。

我打多少次con.Execute() 有关系吗?只在一个查询下使用它会更好吗?我问这个是为了确定我的应用程序的设计,以便我知道我是否应该加倍努力尝试让每个人都接受一次执行。

不确定是否重要,但我打算使用 SQL Server。

【问题讨论】:

    标签: c# sql-server asp.net-core-mvc dapper


    【解决方案1】:

    没有人能真正回答你的问题,因为没有人真正知道你如何评价“更好”。

    单次执行方法的一个优点是您的应用程序与服务器之间的往返次数更少。换句话说,开销和等待更少。如果您的应用与实例没有快速可靠的连接,这可能非常重要。一个缺点是,如果发生错误,您的应用程序可能无法识别导致错误的语句。

    此外,您还可以构造单个语句来插入多行 - 而不是在一个字符串中创建多个语句。例如,

    insert dbo.FOO (ID, Name) values (1, 'Test'), (2, 'ABC'); 
    

    这有什么不同吗?一个轻微的,但你是法官。这些都是简单的例子,没有单一的答案/方法对所有情况都是“最好的”。而且您确实需要考虑您的事务边界 - 您是否希望两行都作为一个工作单元插入(所以如果一个失败,另一个也不会插入)?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      相关资源
      最近更新 更多