Я работаю над веб-сервисом для создания, изменения и удаления бронирований в отелях (бронирования). Одно бронирование может содержать несколько пребываний (пребывание - это связь между номером, заказанными услугами и т. Д.). Каждое пребывание имеет свой период времени, поэтому вы можете создать 3 пребывания в одном бронировании на 3 разные недели.
Моя проблема возникает, когда необходимо изменить бронирование. Входными данными являются идентификатор бронирования (как показано выше), а также новые данные о желаемом пребывании. Таким образом, если первоначальное проживание составляло 2 одноместных номера и 1 двухместный номер, каждый со своей датой начала и окончания, и клиент хотел изменить одну из одноместных номеров на двухместный номер, он отправил бы: 1 одноместный, 2 двухместных и я должен выяснить, что изменилось (это не изменится, поэтому я боюсь, что любые решения, предлагающие изменить это, вышли).
Я использую LINQ, чтобы выбрать текущие пребывания и установить их для удаления
var oldStays = (from stay in persistentStorage.DataContext.Stays
where stays.booking_id == bookingId
select stay);
persistentStorage.DataContext.Stays.DeleteAllOnSubmit(oldStays);
Однако прежде чем я смогу их удалить, я должен убедиться, что для новых мест есть свободные номера. Самый простой выход - если LINQ автоматически примет новые записи как удаленные при выполнении новых запросов (то есть мне не придется беспокоиться о датах, существующих комнатах и т. Д.). Если это так, проблема уже решена.
Если нет, мне нужен какой-то способ проверки новых доступных бронирований, в то же время игнорируя пребывание, которое не изменилось (в вышеупомянутом случае мне нужно будет только проверить, был ли доступен двухместный номер за указанный период, так как другой двухместный и одноместный уже забронированы). Есть ли какой-нибудь умный способ, которым LINQ может помочь в этом, и если да, то как?