比较 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 value
或 Output parameter
,它只需要 input parameter
并提供结果,该结果具有与 Type T
的属性匹配的模式。如果需要 return value
或 Output 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 来提供结果
我想问一下使用 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 value
或 Output parameter
,它只需要 input parameter
并提供结果,该结果具有与 Type T
的属性匹配的模式。如果需要 return value
或 Output 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 来提供结果