コード例 #1
0
        /// <summary> Инициализация БД </summary>
        public static void Initialize(this WebStoryContext context)
        {
            context.Database.EnsureCreated();   //база есть

            if (context.Products.Any())
            {
                return;                          //нет продуктов в БД
            }
            using (var transaction = context.Database.BeginTransaction())
            {
                foreach (var section in TestData.Sections)
                {
                    context.Sections.Add(section);
                }

                context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Sections] ON");
                context.SaveChanges();
                context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Sections] OFF");
                transaction.Commit();
            }

            using (var transaction = context.Database.BeginTransaction())
            {
                foreach (var brand in TestData.Brands)
                {
                    context.Brands.Add(brand);
                }

                context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Brands] ON");
                context.SaveChanges();
                context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Brands] OFF");
                transaction.Commit();
            }

            using (var transaction = context.Database.BeginTransaction())
            {
                foreach (var product in TestData.Products)
                {
                    context.Products.Add(product);
                }

                context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Products] ON");
                context.SaveChanges();
                context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Products] OFF");
                transaction.Commit();
            }
        }
コード例 #2
0
        public ProductDto UpdateProduct(ProductDto product)
        {
            Product prod = product.Map();

            Product oldProd = _db.Products.FirstOrDefault(p => p.Id == prod.Id);

            if (oldProd is null)
            {
                return(prod.Map());
            }

            oldProd.Name      = prod.Name;
            oldProd.ImageUrl  = prod.ImageUrl;
            oldProd.Order     = prod.Order;
            oldProd.Price     = prod.Price;
            oldProd.BrandId   = prod.BrandId;
            oldProd.SectionId = prod.SectionId;

            _db.SaveChanges();

            return(prod.Map());
        }
コード例 #3
0
        public OrderDto CreateOrder(CreateOrderModel orderModel, string userName)
        {
            //пользователь
            var user = _userManager.FindByNameAsync(userName).Result;

            //начало транзакции
            using (var tran = _context.Database.BeginTransaction())
            {
                //новый заказ
                Order ord = new Order
                {
                    Name    = orderModel.OrderViewModel.Name,
                    Address = orderModel.OrderViewModel.Address,
                    Phone   = orderModel.OrderViewModel.Phone,
                    User    = user,
                    Date    = DateTime.Now
                };
                _context.Orders.Add(ord);

                //элементы заказа
                foreach (var it in orderModel.Items)
                {
                    //var prod = _context.Products.FirstOrDefault(p => p.Id == it.Id);
                    var prod = _context.Products.Find(it.Id);
                    if (prod is null)
                    {
                        throw new InvalidOperationException($"Товар c id={it.Id} не найден в базе данных");
                    }

                    OrderItem ordItem = new OrderItem
                    {
                        Order    = ord,
                        Product  = prod,
                        Price    = prod.Price,
                        Quantity = it.Quantity
                    };
                    _context.OrderItems.Add(ordItem);
                }

                //сохраняем в БД
                _context.SaveChanges();

                //завершение транзакции
                tran.Commit();

                return(ord.Map());
            }
        }