コード例 #1
0
        public virtual async Task SaveChangesAsync(SitemapItem[] sitemapItems)
        {
            if (sitemapItems == null)
            {
                throw new ArgumentNullException(nameof(sitemapItems));
            }

            using (var repository = RepositoryFactory())
            {
                var pkMap         = new PrimaryKeyResolvingMap();
                var itemsIds      = sitemapItems.Select(x => x.Id).Where(x => x != null).Distinct().ToArray();
                var existEntities = await repository.SitemapItems.Where(s => itemsIds.Contains(s.Id)).ToArrayAsync();

                foreach (var sitemapItem in sitemapItems)
                {
                    var changedEntity = AbstractTypeFactory <SitemapItemEntity> .TryCreateInstance().FromModel(sitemapItem, pkMap);

                    var existEntity = existEntities.FirstOrDefault(x => x.Id == sitemapItem.Id);
                    if (existEntity != null)
                    {
                        changedEntity.Patch(existEntity);
                    }
                    else
                    {
                        repository.Add(changedEntity);
                    }
                }

                await repository.UnitOfWork.CommitAsync();

                pkMap.ResolvePrimaryKeys();
            }

            SitemapItemSearchCacheRegion.ExpireRegion();
        }
コード例 #2
0
        public virtual async Task RemoveAsync(string[] itemIds)
        {
            if (itemIds == null)
            {
                throw new ArgumentNullException(nameof(itemIds));
            }

            using (var repository = RepositoryFactory())
            {
                var sitemapItemEntities = await repository.SitemapItems.Where(i => itemIds.Contains(i.Id)).ToArrayAsync();

                if (sitemapItemEntities.Any())
                {
                    foreach (var sitemapItemEntity in sitemapItemEntities)
                    {
                        repository.Remove(sitemapItemEntity);
                    }
                    await repository.UnitOfWork.CommitAsync();
                }
            }

            SitemapItemSearchCacheRegion.ExpireRegion();
        }