private static void DataReadMapping(SqlDatabase database, MethodType type) { IEnumerable<Employee> employeeData; switch (type) { case MethodType.One: { // Create an output row mapper that maps all properties based on the column names IRowMapper<Employee> mapper = MapBuilder<Employee>.BuildAllProperties(); // Create a stored procedure accessor that uses this output mapper var accessor = database.CreateSqlStringAccessor("SELECT * FROM Employees", mapper); // Execute the accessor to obtain the results employeeData = accessor.Execute(); break; } case MethodType.Two: { employeeData = database.ExecuteSqlStringAccessor<Employee>("SELECT * FROM Employees"); break; } case MethodType.Three: { IRowMapper<Employee> mapper = MapBuilder<Employee>.MapAllProperties() .MapByName(x => x.LastName) .DoNotMap(x => x.TitleOfCourtesy) .Map(x => x.City).ToColumn("City") .Map(x => x.HireDate).WithFunc(x => x.GetDateTime(x.GetOrdinal("HireDate"))) .Build(); var accessor = database.CreateSqlStringAccessor("SELECT * FROM Employees", mapper); employeeData = accessor.Execute(); break; } default: throw new NotSupportedException(); } // Perform a client-side query on the returned data var results = from employee in employeeData where employee.Country == "USA" orderby employee.EmployeeID select new { Name = employee.FirstName }; results.ToList().ForEach(obj => Console.WriteLine(obj.Name)); var products = database.ExecuteSprocAccessor<Product>("Ten Most Expensive Products"); products.ToList().ForEach(product => Console.WriteLine(product.TenMostExpensiveProducts, product.UnitPrice)); var sales = database.ExecuteSprocAccessor<Sale>("SalesByCategory", "Beverages", "1998"); sales.ToList().ForEach(sale => Console.WriteLine(sale.ProductName, sale.TotalPurchase)); }