标题几乎说明了一切。由于Dapper没有太多文档。提前谢谢。
答案 0 :(得分:1)
Query()返回IEnumerable。当你开始遍历你的IEnumerable时,在Dapper中调用一些方法,用一个结果来填充POCO,这样你的结果就会在迭代时逐步实现。您需要在执行此操作时保持数据库连接处于打开状态,因为您无法保证结果集的所有行都会立即返回。实际上对于大型结果集,您希望能够循环遍历它们,而无需在应用程序的内存中设置整个结果。在任何时候,您都可以在IEnumerable上调用ToList(),然后您已经实现了所有内容,并且可以关闭连接。
答案 1 :(得分:0)
如您所见,结果在执行查询后立即实现。
Dapper-版本1.50.5
public static IEnumerable<T> Query<T>(this IDbConnection cnn, string sql, object param = null, IDbTransaction transaction = null, bool buffered = true, int? commandTimeout = default(int?), CommandType? commandType = default(CommandType?))
{
CommandDefinition command = new CommandDefinition(sql, param, transaction, commandTimeout, commandType, buffered ? CommandFlags.Buffered : CommandFlags.None);
IEnumerable<T> enumerable = cnn.QueryImpl<T>(command, typeof(T));
if (!command.Buffered)
{
return enumerable;
}
return enumerable.ToList();
}