1
實體包含標籤列表。客戶端收到標籤ID的更新列表。有些標籤需要從列表中刪除,有些則添加到列表中。我決定這個問題的方式如下:什麼是更新列表的最佳實踐?
有兩類
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; }
}
和更新方法
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