コード例 #1
0
ファイル: SimpleDemo.cs プロジェクト: JackBao/MyLab
        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));
        }