У меня есть объект домена, называемый Project, который сопоставляется с таблицей в моей базе данных SQL-сервера. Он имеет свойство, которое является списком, называемым зависимостями.
public class Project
{
public int Id;
public List<ProjectDependency> Dependencies;
}
public class ProjectDependency
{
public Project Project;
public Project Dependency;
}
и я пытаюсь выяснить наиболее эффективный способ обновления списка зависимостей, учитывая новый список зависимостей.
Итак, вот наивная реализация:
public void UpdateDependencies(Project p, List<int> newDependencyIds)
{
p.Dependencies.Clear();
foreach (var dependencyId in newDependencyIds)
{
Project d = GetDependency(dependencyId)
p.Dependencies.Add(new ProjectDependency{Project = p, Dependency = d});
}
}
но проблема в том, что даже если ничего не меняется, я очищаю все элементы и делаю вставки на тех же элементах, которые были там раньше.
Я ищу элегантный способ определить diff (что было добавлено, что было удалено) и просто внести эти изменения, так что если зависимость была там до и после этого, она не трогается.