У меня есть объект с вложенными частями в трех таблицах. Классы POCO с IList <> для отношений. Никаких связей с какими-либо рамками.
A_object-> B_object[N]-> C_object[N]
Я отправляю этот объект в хранилище для обновления. Хранилище сохраняет содержимое, используя Linq to SQL.
myRepo.Update(A_object);
Первый цикл, который обрабатывает обновления и удаления:
foreach (var B in A.B_records)
{ foreach (var C in B.C_records)
{
if( C is in our parameter object)
// update the database object
else
// not found, delete the database object
}
if( B is in our parameter object)
// update the database object
else
// not found, delete the database object
}
Цикл обновляет запись базы данных, если она найдена в нашем объекте параметра, или удаляет запись базы данных, если она не найдена в нашем объекте параметра. Таким образом, обновления и удаления работают нормально.
Учитывая, что я не могу изменить класс объекта параметра, ** есть ли какой-нибудь шаблон или механизм, который я мог бы реализовать, чтобы вставить отсутствующие объекты B и C без повторного запроса базы данных?
Очевидно, я мог бы создать массив для найденных первичных ключей B и C, а затем пропустить их в цикле вставки, но есть ли лучший способ, которого мне не хватает?