Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dapper能否实现多重删除插入或更新为QueryMultiple?_Dapper - Fatal编程技术网

Dapper能否实现多重删除插入或更新为QueryMultiple?

Dapper能否实现多重删除插入或更新为QueryMultiple?,dapper,Dapper,我已经看到来自整洁的官方文件的查询,如下所示,非常方便 var sql = @" select * from Customers where CustomerId = @id select * from Orders where CustomerId = @id select * from Returns where CustomerId = @id"; using (var multi = connection.QueryMultiple(sql, new {id=selected

我已经看到来自整洁的官方文件的查询,如下所示,非常方便

     var sql = @"
select * from Customers where CustomerId = @id
select * from Orders where CustomerId = @id
select * from Returns where CustomerId = @id";

using (var multi = connection.QueryMultiple(sql, new {id=selectedId}))
{
   var customer = multi.Read<Customer>().Single();
   var orders = multi.Read<Order>().ToList();
   var returns = multi.Read<Return>().ToList();
   ...
}

任何帮助都将不胜感激

是的,您可以简单地调用connection.Execute,它已经允许您尝试执行的多个命令,这与SqlCommand上的ExecuteQuery相同,Dapper无论如何都在调用它。

正如BK.观察到的,任何SQL命令都可以执行多个操作,
QueryMultiple
中的唯一意义在于它如何处理结果网格以获取数据。您无需更改任何内容即可执行多语句命令-只需
execute(sql,param)
即可。BK,感谢您的回复。这是一种简洁的交易方式吗?他们之间有什么区别?性能方面哪一个更好?再次感谢。@Kevin你能澄清这个问题吗?这似乎是关于交易。。。您确实可以将事务与dapper一起使用,但它不会自动执行(这有一个参数)。Re“更好”/“性能”-我们在这里比较的两个(或更多)方面是什么?@Marc Gravell很抱歉提出了一个不清楚的问题!遇到多个SQL实施计划时。哪个功能将被优先考虑?connection.Execute(sql,param)或connection.Execute(stringsql,dynamicparam=null,IDbTransaction=null,int?commandTimeout=null)@Kevin这是相同的方法。唯一的区别是在其中一个中指定了参数。仅仅添加额外的null参数没有什么区别。除非您使用的是c#3构建,在这种情况下,它是一种不同的方法,但仍然不会有任何性能差异。有使用它的完整示例代码吗?获取受影响的寄存器的数量?我有9条最新声明
 var sql = @"delete from tb_role where roleid=@ID
                            delete from tb_rolepermission where roleid=@ID
                            delete from tb_userrole where roleid=@ID
        ";
        var param = new { ID=id };

 connection.EXECUTEMultiple(sql, param)..........