Сохранение графа сложных отдельных объектов в EF6

У меня есть текущий сценарий:

Сначала я использую код EF6 и создал модель данных примерно так:

public class MainObject{
  ..some properties
  IList<SubObject> SubObjects{get;set;}
}

public class SubObject{
  ..some properties
  IList<SubSubObject> SubSubObjects{get;set;}
}

public class SubObject{
  ..some properties
  IList<SubObject> SubObjects{get;set;}
}

Таким образом, в основном у меня есть основной объект, который имеет от 0 до многих подобъектов, и между подобъектом и подобъектами существует отношение многие ко многим.

Я создаю приложение MVC, поэтому мой обычный программный поток состоит в том, что пользователь запрашивает страницу, которая в основном использует MainObject в качестве модели данных. Затем пользователь взаимодействует со страницей и изменяет, добавляет или удаляет подобъекты и подобъекты по своему усмотрению, а затем нажимает кнопку «Сохранить». При сохранении объект графа отправляется обратно в контроллер, и он выглядит правильно в соответствии с изменениями, сделанными пользователем на стороне клиента. Теперь моя проблема заключается в следующем:

Как сохранить это обратно в базу данных хорошим способом.

Мне нужно прикрепить мой объект обратно в контекст, но я понятия не имею, какие объекты являются новыми, изменены или удалены.

Я написал некоторый код, который частично работает сейчас, но он становится настолько уродливым, что я действительно не хочу идти по этому пути. Можно ли каким-то образом извлечь соответствующий граф объекта из базы данных, и чтобы EF сравнил эти два графика в направлении друг друга, а затем сохранил соответствующие изменения в базе данных?

Любая помощь, чтобы сделать это более гладко, будет принята с благодарностью.

Ответы на вопрос(1)

Ваш ответ на вопрос