Сущность содержит список тегов. Клиент получает обновленный список идентификаторов тегов. Некоторые теги нужно удалить из списка, а некоторые добавить в список. Я решил эту проблему следующим образом:Каковы наилучшие практики для списка обновлений?
Есть два класса
public class Entity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int EntityId { get; set; }
public ICollection<Tag> Tags { get; set; }
}
public class Tag
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TagId { get; set; }
public int EntityId { get; set; }
public Entity Entity { get; set; }
}
И Update метод
public void UpdateEntityTags(int entityId, int[] tags)
{
var entity = _context.Entities.Find(entityId);
var sourceTags = entity.Tags.Select(x => x.TagId);
var removeList = sourceTags.Except(tags);
var tagsForRemove = entity.Tags.Where(x => removeList.Contains(x.TagId));
entity.Tags.RemoveRange(tagsForRemove);
var addList = tags.Except(sourceTags);
var tagsForAdd = _context.Tags.Where(x => removeList.Contains(x.TagId));
entity.Tags.AddRange(tagsForAdd);
_context.SaveChanges();
}
Это хороший способ, или есть лучше?
Он выглядит хорошо для меня :) –
Теги должны быть удалены/добавлены на основании каких критериев? Как люди должны сказать вам, если это хорошее решение, не зная требований? – ataravati