Пример #1
0
        public ProductDto GetProduct(int id)
        {
            using (AdventureWorks2014Entities dbContext = new AdventureWorks2014Entities())
            {
                Product product = dbContext.Products.Find(id);
                if (product == null)
                {
                    throw new ArgumentException("id");
                }

                ProductDto productDto = new ProductDto();
                productDto.ProductID             = product.ProductID;
                productDto.Name                  = product.Name;
                productDto.ProductNumber         = product.ProductNumber;
                productDto.MakeFlag              = product.MakeFlag;
                productDto.FinishedGoodsFlag     = product.FinishedGoodsFlag;
                productDto.Color                 = product.Color;
                productDto.SafetyStockLevel      = product.SafetyStockLevel;
                productDto.ReorderPoint          = product.ReorderPoint;
                productDto.StandardCost          = product.StandardCost;
                productDto.ListPrice             = product.ListPrice;
                productDto.Size                  = product.Size;
                productDto.SizeUnitMeasureCode   = product.SizeUnitMeasureCode;
                productDto.WeightUnitMeasureCode = product.WeightUnitMeasureCode;
                productDto.Weight                = product.Weight;
                productDto.DaysToManufacture     = product.DaysToManufacture;
                productDto.ProductLine           = product.ProductLine;
                productDto.Class                 = product.Class;
                productDto.Style                 = product.Style;
                productDto.ProductSubcategoryID  = product.ProductSubcategoryID;
                productDto.ProductModelID        = product.ProductModelID;
                productDto.SellStartDate         = product.SellStartDate;
                productDto.SellEndDate           = product.SellEndDate;
                productDto.DiscontinuedDate      = product.DiscontinuedDate;
                productDto.rowguid               = product.rowguid;
                productDto.ModifiedDate          = product.ModifiedDate;

                productDto.ProductListPriceHistories = new List <ProductListPriceHistoryDto>();
                foreach (ProductListPriceHistory productListPriceHistory in product.ProductListPriceHistories)
                {
                    ProductListPriceHistoryDto productListPriceHistoryDto = new ProductListPriceHistoryDto();
                    productListPriceHistoryDto.EndDate      = productListPriceHistory.EndDate;
                    productListPriceHistoryDto.ListPrice    = productListPriceHistory.ListPrice;
                    productListPriceHistoryDto.ModifiedDate = productListPriceHistory.ModifiedDate;
                    productListPriceHistoryDto.ProductID    = productListPriceHistory.ProductID;
                    productListPriceHistoryDto.StartDate    = productListPriceHistory.StartDate;

                    productDto.ProductListPriceHistories.Add(productListPriceHistoryDto);
                }

                return(productDto);
            }
        }
        public ProductDto GetProduct(int id)
        {
            string sql = @"SELECT
       [p].[ProductID]
      ,[p].[Name]
      ,[p].[ProductNumber]
      ,[p].[MakeFlag]
      ,[p].[FinishedGoodsFlag]
      ,[p].[Color]
      ,[p].[SafetyStockLevel]
      ,[p].[ReorderPoint]
      ,[p].[StandardCost]
      ,[p].[ListPrice]
      ,[p].[Size]
      ,[p].[SizeUnitMeasureCode]
      ,[p].[WeightUnitMeasureCode]
      ,[p].[Weight]
      ,[p].[DaysToManufacture]
      ,[p].[ProductLine]
      ,[p].[Class]
      ,[p].[Style]
      ,[p].[ProductSubcategoryID]
      ,[p].[ProductModelID]
      ,[p].[SellStartDate]
      ,[p].[SellEndDate]
      ,[p].[DiscontinuedDate]
      ,[p].[rowguid]
      ,[p].[ModifiedDate]
      ,[Plph].[EndDate]
      ,[Plph].[ListPrice]
      ,[Plph].[ModifiedDate]
      ,[Plph].[ProductID]
      ,[Plph].[StartDate]
  FROM [AdventureWorks2014].[Production].[Product] [p]
  LEFT JOIN [AdventureWorks2014].[Production].[ProductListPriceHistory] [Plph]
  ON [p].[ProductID] = [Plph].[ProductID]
  WHERE [p].[ProductID] = @Id;";

            SqlCommand cmd = this.connection.CreateCommand();

            cmd.CommandText = sql;
            cmd.CommandType = System.Data.CommandType.Text;

            cmd.Parameters.AddWithValue("@Id", id);

            bool       isFirst    = true;
            ProductDto productDto = new ProductDto();

            productDto.ProductListPriceHistories = new List <ProductListPriceHistoryDto>();

            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    if (isFirst)
                    {
                        productDto.ProductID             = (int)reader["ProductID"];
                        productDto.Name                  = this.MapToString(reader, "Name");
                        productDto.ProductNumber         = this.MapToString(reader, "ProductNumber");
                        productDto.MakeFlag              = (bool)reader["MakeFlag"];
                        productDto.FinishedGoodsFlag     = (bool)reader["FinishedGoodsFlag"];
                        productDto.Color                 = this.MapToString(reader, "Color");
                        productDto.SafetyStockLevel      = (short)reader["SafetyStockLevel"];
                        productDto.ReorderPoint          = (short)reader["ReorderPoint"];
                        productDto.StandardCost          = (decimal)reader["StandardCost"];
                        productDto.ListPrice             = (decimal)reader["ListPrice"];
                        productDto.Size                  = this.MapToString(reader, "Size");
                        productDto.SizeUnitMeasureCode   = this.MapToString(reader, "SizeUnitMeasureCode");
                        productDto.WeightUnitMeasureCode = this.MapToString(reader, "WeightUnitMeasureCode");
                        productDto.Weight                = this.MapToDecimal(reader, "Weight");
                        productDto.DaysToManufacture     = (int)reader["DaysToManufacture"];
                        productDto.ProductLine           = this.MapToString(reader, "ProductLine");
                        productDto.Class                 = this.MapToString(reader, "Class");
                        productDto.Style                 = this.MapToString(reader, "Style");
                        productDto.ProductSubcategoryID  = this.MapToInt(reader, "ProductSubcategoryID");
                        productDto.ProductModelID        = this.MapToInt(reader, "ProductModelID");
                        productDto.SellStartDate         = (DateTime)reader["SellStartDate"];
                        productDto.SellEndDate           = this.MapToDateTime(reader, "SellEndDate");
                        productDto.DiscontinuedDate      = this.MapToDateTime(reader, "DiscontinuedDate");
                        productDto.rowguid               = (Guid)reader["rowguid"];
                        productDto.ModifiedDate          = (DateTime)reader["ModifiedDate"];

                        isFirst = false;
                    }

                    DateTime?stratDate = this.MapToDateTime(reader, "StartDate");
                    if (stratDate.HasValue)
                    {
                        ProductListPriceHistoryDto productListPriceHistoryDto = new ProductListPriceHistoryDto();
                        productListPriceHistoryDto.StartDate    = stratDate.Value;
                        productListPriceHistoryDto.EndDate      = this.MapToDateTime(reader, "EndDate");
                        productListPriceHistoryDto.ListPrice    = (decimal)reader["ListPrice"];
                        productListPriceHistoryDto.ModifiedDate = (DateTime)reader["ModifiedDate"];
                        productListPriceHistoryDto.ProductID    = (int)reader["ProductID"];

                        productDto.ProductListPriceHistories.Add(productListPriceHistoryDto);
                    }
                }
            }

            if (isFirst)
            {
                throw new ArgumentException("id");
            }

            return(productDto);
        }
        private void MapperConfigure(MapperInstance cfd)
        {
            cfd.AddMap <Person, PersonInfoDto>(src =>
            {
                PersonInfoDto dst = new PersonInfoDto();
                dst.InjectFrom(src);
                dst.EmployeeBrithDate = src.Employee?.BirthDate;

                return(dst);
            });

            cfd.AddMap <EmailAddress, EmailDto>(src =>
            {
                EmailDto dst = new EmailDto();
                dst.InjectFrom(src);
                dst.EmailAddress = src.EmailAddress1;

                return(dst);
            });

            cfd.AddMap <ShipMethod, ShipMethodDto>(src =>
            {
                ShipMethodDto dst = new ShipMethodDto();
                dst.InjectFrom(src);
                return(dst);
            });

            cfd.AddMap <ProductListPriceHistory, ProductListPriceHistoryDto>(src =>
            {
                ProductListPriceHistoryDto dst = new ProductListPriceHistoryDto();
                dst.InjectFrom(src);
                return(dst);
            });

            cfd.AddMap <Product, ProductDto>(src =>
            {
                ProductDto dst = new ProductDto();
                dst.InjectFrom(src);
                dst.ProductListPriceHistories = new List <ProductListPriceHistoryDto>();
                foreach (ProductListPriceHistory item in src.ProductListPriceHistories)
                {
                    ProductListPriceHistoryDto itemDto = new ProductListPriceHistoryDto();
                    itemDto.InjectFrom(item);

                    dst.ProductListPriceHistories.Add(itemDto);
                }

                return(dst);
            });

            cfd.AddMap <ProductModel, ProductModelDto>(src =>
            {
                ProductModelDto dst = new ProductModelDto();
                dst.InjectFrom(src);
                return(dst);
            });

            cfd.AddMap <Product, Product2Dto>(src =>
            {
                Product2Dto dst = new Product2Dto();
                dst.InjectFrom(src);
                dst.ProductModel = new ProductModelDto();
                dst.ProductModel.InjectFrom(src.ProductModel);
                dst.ProductModelID = src.ProductModel?.ProductModelID;

                return(dst);
            });
        }