public async Task <ActionResult> EditMerge(MergeEntityX model)
        {
            var newModel = model.SavedItem;

            if (model.UpdateName)
            {
                newModel.Name = model.NewItem.Name;
            }
            if (model.UpdatePrice)
            {
                newModel.Price = model.NewItem.Price;
            }
            return(await Edit(newModel));
        }
        public async Task <ActionResult> Edit(EntityX model)
        {
            try {
                using (SqlXRepository repository = new SqlXRepository()) {
                    try {
                        await repository.UpdateAsync(model).ConfigureAwait(false);

                        TempData["Message"] = $"{model.Name} updated successfully.";
                    } catch (ConcurrencyException ex) {
                        var merge = new MergeEntityX {
                            NewItem   = model,
                            SavedItem = await repository.ReadAsync(model.Id),
                        };
                        return(View("EditMerge", merge));
                    } catch (Exception ex) {
                        TempData["Message"] = $"There was an error updating record: {model.Id}";
                    }
                }
                return(RedirectToAction("Index"));
            } catch (Exception ex) {
                TempData["Message"] = $"Cannot update {model.Name}.";
                return(RedirectToAction("Index"));
            }
        }