比较 Dapper 中的 QUERY 和 EXECUTE

Comparing QUERY and EXECUTE in Dapper

我想问一下使用 DAPPER 插入、更新、删除、删除、查询特定数据时最好使用什么?我真的很困惑在 DAPPER 中使用 EXECUTE 和 QUERY 命令..

这根本不会造成混淆,尤其是当您查看 Dapper 公开的方法的签名时(根据文档):

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

查询方法专门用于在内部执行 select 语句,可以 return IEnumerable of a type T,如果使用 anonymous parameter 完成,可以选择执行它,那么您不需要任何 return valueOutput parameter,它只需要 input parameter 并提供结果,该结果具有与 Type T 的属性匹配的模式。如果需要 return valueOutput parameter,则需要使用 DynamicParameters

进行绑定
public static int Execute(this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null)

Execute方法用于执行DML语句,如Insert, Update and Delete,其目的是对数据库中的数据进行更改。 return 类型是一个 integer,它应该包含更新行数的值,如果在 SQL 服务器中我们设置了 Set RowCount On,此调用将无助于 return正在处理结果集,它仅用于 DML 调用。

如果您需要多个结果集,那么我们有 QueryMultiple。其中 return 是一个 GridReader,可用于 return 多个 Select 语句的结果,使用 MARS(多个活动结果集)的概念。

实际上,如果您的目标只是执行一个过程,那么它们中的任何一个都可以,但更重要的是期待收到的结果集,它们都有不同的 return 来提供结果