public void UpdateLinkItemKeywords(Item item, string keywordsData) { if (keywordsData == null) { return; } var keywords = keywordsData.Split(',').ToList().Select(k => k.Trim().ToLower()).ToArray(); foreach (var keyword in keywords) { if (!_context.Keywords.Any(k => k.Word == keyword)) { var newKeyword = new Keyword() { Word = keyword }; _context.Keywords.Add(newKeyword); } } _context.SaveChanges(); var keywordIds = _context.Keywords.Where(k => keywords.Contains(k.Word)).Select(k => k.Id).ToList(); var linkToRemove = _context.ItemKeywords.Where(ik => ik.ItemId == item.Id && !keywordIds.Contains(ik.KeywordId)); _context.ItemKeywords.RemoveRange(linkToRemove); var existingLinks = _context.ItemKeywords.Where(ic => ic.ItemId == item.Id).Select(ic => ic.KeywordId).ToArray(); foreach (var keywordId in keywordIds) { if (!existingLinks.Contains(keywordId)) { var itemKeywordLink = new ItemKeyword(); itemKeywordLink.KeywordId = keywordId; itemKeywordLink.ItemId = item.Id; _context.ItemKeywords.Add(itemKeywordLink); } } _context.SaveChanges(); }
void ImportItemKeywords(Models.Item item, IEnumerable <String> keywords) { foreach (var word in keywords) { var keyword = _context.Keywords.SingleOrDefault(k => k.Word == word); if (keyword == null) { keyword = new Keyword(); keyword.Word = word; _context.Keywords.Add(keyword); _context.SaveChanges(); } var ItemKeyword = _context.ItemKeywords.SingleOrDefault(ic => ic.ItemId == item.Id && ic.KeywordId == keyword.Id); if (ItemKeyword == null) { ItemKeyword = new ItemKeyword(); ItemKeyword.ItemId = item.Id; ItemKeyword.KeywordId = keyword.Id; _context.ItemKeywords.Add(ItemKeyword); } _context.SaveChanges(); } }