Dapper什么时候实现'?像实体一样在ToList()实现

时间:2017-01-31 10:18:32

标签: entity-framework orm dapper

标题几乎说明了一切。由于Dapper没有太多文档。提前谢谢。

2 个答案:

答案 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();
}