private async Task <JsonResult> UpdateItemsAsync <TItem>(IList <TItem> items) where TItem : BaseModel, IPageItem { var result = new ResultModel(); if (!items.Any()) { result.IsSuccess = true; return(Json(result)); } var pageId = items.FirstOrDefault()?.PageId; var pageScripts = _pagesContext.Set <TItem>().Where(x => x.PageId.Equals(pageId)).ToList(); foreach (var prev in pageScripts) { var up = items.FirstOrDefault(x => x.Id.Equals(prev.Id)); if (up == null) { _pagesContext.Set <TItem>().Remove(prev); } else if (prev.Order != up.Order || prev.Script != up.Script) { prev.Script = up.Script; prev.Order = up.Order; _pagesContext.Set <TItem>().Update(prev); } } var news = items.Where(x => x.Id == Guid.Empty).Select(x => new { PageId = pageId, x.Script, x.Order }).Adapt <IEnumerable <TItem> >().ToList(); if (news.Any()) { _pagesContext.Set <TItem>().AddRange(news); } try { await _pagesContext.SaveChangesAsync(); RemovePageFromCache(pageId.GetValueOrDefault(Guid.Empty)); result.IsSuccess = true; } catch (Exception ex) { Debug.WriteLine(ex); } return(new JsonResult(result)); }