/// <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(); } }
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()); }
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()); } }