public async Task <IActionResult> Edit(FilmEditViewModel model) { if (!ModelState.IsValid) { return(RedirectToAction(nameof(Edit), new { id = model.Id })); } var item = await films.GetAsync(model.Id); if (item == null) { return(NotFound()); } if (model.Producer != item.Producer?.Name) { item.ProducerId = producers.LoadOrCreate(model.Producer); } if (model.Poster != null) { int newPosterId = await posters.AddAsync(model.Poster); if (newPosterId > 0 && item.PosterId != null) { await posters.DeleteAsync((int)item.PosterId); } item.PosterId = newPosterId; } item.Name = model.Name; item.Description = model.Description; item.Producer = null; item.Year = model.Year; await films.SaveAsync(item); return(RedirectToAction(nameof(Edit), new { id = item.Id })); }