Сохранение графа сложных отдельных объектов в 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 сравнил эти два графика в направлении друг друга, а затем сохранил соответствующие изменения в базе данных?
Любая помощь, чтобы сделать это более гладко, будет принята с благодарностью.