是否多次调用con.execute()是否重要?

时间:2017-10-22 21:47:05

标签: c# sql-server asp.net-core-mvc 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在use语句中打开,并在using语句的退出处关闭。

我拨打con.Execute()的次数是否重要?将它放在一个查询下更好吗?我问这个是为了确定我的应用程序的设计,以便我知道我是否应该加倍努力让每个人都在一次执行下。

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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