using System.Data.SqlClient;
using System.Diagnostics;
using System.Collections.Generic;
public int OrderDetailID { get; set; }
public int OrderID { get; set; }
public int ProductID { get; set; }
public int Quantity { get; set; }
public static void Main()
string sql = "SELECT * FROM OrderDetails;";
using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
var stopwatch = Stopwatch.StartNew();
var command = new SqlCommand("SELECT TOP 10 * FROM OrderDetails", connection);
var results = new List<OrderDetail>();
using (var reader = command.ExecuteReader())
var orderDetailID = reader.GetInt32(reader.GetOrdinal("OrderDetailID"));
var orderID = reader.GetInt32(reader.GetOrdinal("OrderId"));
var productID = reader.GetInt32(reader.GetOrdinal("ProductID"));
var quantity = reader.GetInt32(reader.GetOrdinal("Quantity"));
results.Add(new OrderDetail
OrderDetailID = orderDetailID,
Console.WriteLine("reader: " + stopwatch.ElapsedMilliseconds + " ms");
stopwatch = Stopwatch.StartNew();
var orderDetails = connection.Query<OrderDetail>(sql, buffered: false).Take(10);
Console.WriteLine("dapper streaming: " + stopwatch.ElapsedMilliseconds + " ms");
stopwatch = Stopwatch.StartNew();
orderDetails = connection.Query<OrderDetail>(sql).Take(10);
Console.WriteLine("dapper in memory: " + stopwatch.ElapsedMilliseconds + " ms");