Я хочу узнать, как другие справляются со следующим сценарием.
Это не домашняя работа или какое-либо задание. Примеры классов были созданы, чтобы лучше проиллюстрировать мой вопрос, однако он отражает реальный сценарий, о котором мы хотели бы получить обратную связь.
Мы извлекаем все данные из базы данных и помещаем их в объект. Объект представляет одну запись, и если в базе данных существует несколько записей, мы помещаем данные в список <> объекта записи.
Допустим, у нас есть следующие классы;
public class Employee
{
public bool _Modified;
public string _FirstName;
public string _LastName;
public List<Emplyee_Address> _Address;
}
public class Employee_Address
{
public bool _Modified;
public string _Address;
public string _City;
public string _State;
}
Обращаем ваше внимание, что для ясности методы получения и установки не включены в классы. Прежде чем какой-либо кодекс полиции обвиняет меня в том, что я их не использую, обратите внимание, что он был пропущен только для этого примера.
В базе данных есть таблица для сотрудников и еще одна для адресов сотрудников.
Концептуально мы создаем объект List, представляющий данные в таблицах базы данных. Мы делаем глубокий клон этого объекта, который затем привязываем к элементам управления на переднем конце. Затем у нас есть два объекта (Orig и Final), представляющих данные из базы данных.
Затем пользователь вносит изменения в «конечный» объект, создавая, изменяя и удаляя записи. Затем мы хотим сохранить эти изменения в базе данных.
Очевидно, что мы хотим быть максимально элегантными, только редактируя, создавая, удаляя те записи, которые в этом нуждаются.
В конечном итоге мы хотим сравнить два объекта List, чтобы мы могли;
Посмотрите, какие свойства были изменены, чтобы изменения могли быть сохранены в базе данных.
Посмотрите, какие свойства (записи) больше не существуют во втором Списке <>, чтобы эти записи можно было удалить из базы данных.
Посмотрите, какие новые свойства существуют в новом списке <>, чтобы мы могли создавать их в базе данных.
Кто хочет, чтобы мяч катился над тем, как нам лучше всего этого добиться. Помните, что нам также необходимо детализировать список Employee_Address, чтобы проверить наличие изменений, а не только свойства верхнего уровня.
Надеюсь, я дал понять и с нетерпением жду любых предложений.