public Good SaveGood(Good good, Company company, ICollection <IFormFile> newimages) { if (good.Id != 0)//если изменение позиции { _ctx.Entry(good).State = EntityState.Modified; _ctx.SaveChanges(); } else //если новая позиция { _ctx.Goods.Add(good); _ctx.SaveChanges(); //теперь создаем обхъкт связку товар - магазин RelCompanyGood rsg = new RelCompanyGood() { Good = good, GoodId = good.Id, Company = company, CompanyId = company.Id }; //добавляем объект связку в товар good.Companies.Add(rsg); } //удаляем //сначала добавляем картинки в бд и тут же в коллекцию изображений товара foreach (IFormFile im in newimages) { Image newim = new Image { Id = 0, IsMain = true, Description = "", ImageMimeType = im.ContentType, GoodId = good.Id }; using (var reader = new StreamReader(im.OpenReadStream())) { Stream stream = reader.BaseStream; Byte[] inArray = new Byte[(int)stream.Length]; stream.Read(inArray, 0, (int)stream.Length); newim.ImageContent = inArray; } //*картинки в бд _repositoryImage.SaveImage(newim); //*тут же в коллекцию изображений товара good.Images.Clear(); good.Images.Add(newim); } //созраняемся _ctx.Entry(good).State = EntityState.Modified; _ctx.SaveChanges(); return(good); }
public Article SaveArticle(Article good, Company company) { //Редактирование СУЩЕСТВУЮЩЕЙ позиции (дата UpdateStatus не меняется - она меняется только из списка неактивных товаров) if (good.Id != 0) { var dbEntry = _ctx.Articles.Where(g => g.Id == good.Id) .Include(g => g.Category) .Include(g => g.Category.ParentCategory) .Include(g => g.Images) .AsNoTracking() .SingleOrDefault(); if (dbEntry != null) { dbEntry.CategoryType = good.CategoryType; dbEntry.Title = good.Title; dbEntry.EnTitle = good.EnTitle; dbEntry.Description = good.Description; dbEntry.CategoryId = good.CategoryId; dbEntry.Link = good.Link; dbEntry.HashTags = good.HashTags; dbEntry.UpdateTime = DateTime.Now; dbEntry.metaDescription = good.metaDescription; dbEntry.metaKeyWords = good.metaKeyWords; } _ctx.Entry(dbEntry).State = EntityState.Modified; _ctx.SaveChanges(); } //Добавление НОВОЙ позиции (в т.ч. дата UpdateStatus выставляется на текущий день - берется из параметра - good) else { good.CategoryType = good.CategoryType; _ctx.Articles.Add(good); _ctx.SaveChanges(); //теперь создаем обхъкт связку товар - магазин RelCompanyGood rsg = new RelCompanyGood() { Good = good, GoodId = good.Id, Company = company, CompanyId = company.Id }; //добавляем объект связку в товар good.Companies.Add(rsg); _ctx.Entry(good).State = EntityState.Modified; _ctx.SaveChanges(); } return(good); }