在Dapper中比较QUERY和EXECUTE

时间:2016-03-31 05:55:19

标签: c# dapper

我想问一下使用DAPPER进行插入,更新,删除,删除,查询特定数据时最好使用什么?我在DAPPER中使用EXECUTE和QUERY命令时感到很困惑。

1 个答案:

答案 0 :(得分:13)

这根本不应该让人感到困惑,特别是如果你看一下Dapper公开的方法的签名(根据文档):

public static IEnumerable<T> Query<T>(this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)

查询方法专门用于在内部执行select语句,可以返回IEnumerable of a type T,有执行它的选项,如果使用anonymous parameter完成,那么你不期望任何{{1}或return value,它只需要Output parameter并提供结果,该结果具有与input parameter的属性匹配的模式。如果需要Type Treturn value,则需要使用Output parameter绑定

DynamicParameters

Execute方法用于执行DML语句,如public static int Execute(this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null) ,其目的是更改数据库中的数据。返回类型是Insert, Update and Delete,它应该包含更新的行数的值,如果在SQL Server中我们设置了integer,则此调用将无助于返回结果集,它仅用于DML调用

如果您需要多个结果集,那么我们有Set RowCount On。返回QueryMultiple,可以使用MARS(多个活动结果集)的概念返回多个Select语句的结果。

实际上,如果你的目标只是执行一个程序,他们中的任何一个都会这样做,但更重要的是结果集期待收到什么,他们都有不同的回报来提供结果