con.execute()被多次调用会有影响吗?

3
考虑以下内容(使用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);
}

我正在尝试理解执行两个插入语句的方式是否重要。据我了解,con在using语句中打开并在退出using语句时关闭。
我想知道调用con.Execute()多少次是否重要?将其放在一个查询下是否更好?为了确定应用程序的设计,我询问这个问题,以便我知道是否应该额外努力使所有人都在单个execute下。
不确定这是否重要,但我打算使用SQL Server。
1个回答

3
无法给出确切答案,因为没有人知道您如何评估“更好”。
单执行途径的一个优点是您的应用程序与服务器的往返次数较少。换句话说,开销和等待时间都会减少。如果您的应用程序没有快速且可靠的连接到实例,这可能会非常重要。然而,该方法的一个缺点是,如果发生错误,您的应用程序可能无法确定是哪个语句导致了错误。
此外,您还可以构建一个单语句以插入多个行 - 而不是在一个字符串中创建多个语句。例如:
insert dbo.FOO (ID, Name) values (1, 'Test'), (2, 'ABC'); 

这会有所不同吗?略有不同,但您可以自行判断。这些都是简单的示例,并没有一种“最佳”方案适用于所有情况。您需要考虑交易边界-您是否希望两行作为一个工作单元同时插入(因此,如果其中一个失败,则另一个也不会被插入)?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接