kingwsf
@kingwsf
убер программист

Как правильно организовать работу с данными (C# Desktop App, Database)?

e047ce3285a94be897ccb0646db5cf93.png

Нужна помощь в организации работы с данными.
Сабжект: десктопное приложение для гостиницы.
В таблице Reservations данные по каждому размещению. Каждое размещение может состоять из одного или нескольких дней (ResDays). На каждый день размещения может быть добавлена доп. услуга (AddServices).

В программе для этого я использую коллекции. Очень упрощенно:
class AddServiceItem
{
	string Name;
	Decimal Cost;
}
class ResDayItem
{
	DateTime Date;
	Decimal Cost;
	Collection<AddServiceItem> AddServices;
}
class Reservation
{
	DateTime StartDate;
	DateTime StartDate;
	int Status;
	Collection<ResDayItem> ResDays;
}

С созданием размещения проблем нет - пользователь выбирает количество дней, создается экземпляр Reservation, а коллекции из дней и доп. услуг заполняются юзером в интерфейсе программы. После нажатия кнопки "Добавить размещение" все записывается в БД.

Конечно, нужно иметь возможность изменять все данные. При открытии размещения для редактирования, я опять создаю экземпляр Reservation, а коллекции заполняю значениями из БД примерно так
MyReservation = new Reservation();
//создаю коллекцию дней
MyReservation.ResDays = new Collection<ResDayItem>();
//и для каждого дня размещения с Id == resId
foreach (var Day in db.Table<ResDays>().Where(x => x.ResId == resId))
{	//создаю экземпляр ResDayItem
    ResDayItem DayItem = new ReservationDayItem();
	//и в нем коллекцию доп. услуг
	DayItem.AddServices = new Collection<AddServItem>();
    foreach (var AddService in db.Table<AddServices>().Where(x => x.ResDayId == Day.Id))
		DayItem.AddServices.Add(AddService);
    MyReservation.ResDays.Add(DayItem);
}

Вопрос в следующем: как (в каком порядке) делать апдейт БД при изменении коллекций?
Хотелось бы, чтобы в БД все писалось при нажатии пользователем кнопки "Сохранить". Если количество дней/доп.услуг осталось прежним, то это просто update по всем записям, а если юзер удалил что-то? Как узнать, какие именно элементы коллекций были удалены, чтобы удалить соответствующие записи из БД?
Может быть я вообще применил неверный подход с такой вложенностью коллекций?
Как правильно организовать работу с данными в такой задаче?
  • Вопрос задан
  • 386 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы