From 630613db7528b070fd431a56a2da5ca86d2cd5e3 Mon Sep 17 00:00:00 2001 From: greg84 Date: Thu, 14 Sep 2017 20:29:54 +0100 Subject: [PATCH] Only query database if a new tag is being added. (#7845) --- .../Modules/Orchard.Tags/Services/TagService.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Services/TagService.cs b/src/Orchard.Web/Modules/Orchard.Tags/Services/TagService.cs index bd50820bd..662f0efb4 100644 --- a/src/Orchard.Web/Modules/Orchard.Tags/Services/TagService.cs +++ b/src/Orchard.Web/Modules/Orchard.Tags/Services/TagService.cs @@ -191,20 +191,22 @@ namespace Orchard.Tags.Services { } public void UpdateTagsForContentItem(ContentItem contentItem, IEnumerable tagNamesForContentItem) { - var tags = tagNamesForContentItem.Select(CreateTag); - var newTagsForContentItem = new List(tags); + var newTagsForContentItem = tagNamesForContentItem.Where(s => s != null).ToList(); var currentTagsForContentItem = contentItem.As().Record.Tags; foreach (var tagContentItem in currentTagsForContentItem) { - if (!newTagsForContentItem.Contains(tagContentItem.TagRecord)) { + var newTag = newTagsForContentItem.FirstOrDefault(t => t.Equals(tagContentItem.TagRecord.TagName, StringComparison.OrdinalIgnoreCase)); + + if (newTag == null) { _contentTagRepository.Delete(tagContentItem); } - - newTagsForContentItem.Remove(tagContentItem.TagRecord); + else { + newTagsForContentItem.Remove(newTag); + } } foreach (var newTagForContentItem in newTagsForContentItem) { - _contentTagRepository.Create(new ContentTagRecord { TagsPartRecord = contentItem.As().Record, TagRecord = newTagForContentItem }); + _contentTagRepository.Create(new ContentTagRecord { TagsPartRecord = contentItem.As().Record, TagRecord = CreateTag(newTagForContentItem) }); } contentItem.As().CurrentTags = tagNamesForContentItem;