Напишите запрос с Entity Framework в приложении бронирования для поиска доступных номеров - PullRequest
0 голосов
/ 11 января 2020

Я работаю над приложением по бронированию, и у меня возникают проблемы при написании правильного запроса при попытке получить свободные номера. Идея проста, клиент выбирает дату начала и окончания, количество жильцов и приложение предоставляет ему свободные номера. Это означает, что даже если номер в настоящее время забронирован, пока текущее бронирование не продлится до даты начала бронирования клиента, оно будет отображаться как опция. Тем не менее, я считаю, что код, который я написал, проверяет только те комнаты, в которых были какие-либо бронирования, связанные с ними, в базе данных, хотя он, очевидно, должен проверять их все. Это таблицы

Номера

int RoomId
int AccommodationId

Rooms_Reservations

int Rooms_ReservationsId
int RoomId
int ReservationId

Бронирование

int ReservationId
int ReservationStatusId
DateTime DateFrom
DateTime DateTo

ReservationStatus

int ReservationStatusId
string ReservationStatusName

(в основном Status = 2 означает, что это активное резервирование, поэтому, если отложенное или отмененное резервирование охватывает диапазон дат, оно все равно отображается как вариант)

Я пропустил остальные поля и упомянул только те, которые имеют отношение к этому вопросу. Я попытался использовать принятый вопрос, связанный с бронированием номеров, но все равно получил те же результаты, поэтому, пожалуйста, не связывайте меня с другим заданным вопросом. Это мой текущий (если есть какие-то базовые c intellisense ошибки, это потому, что я перевожу код)

var list = (from room in _context.Rooms.Where(x => x.AccommodationId == search.AccommodationId)
            join rooms_reservations in _context.Rooms_Reservations
                 on room.RoomId equals rooms_reservations.RoomId
            join reservation in _context.Rezervacija
                 on rooms_reservations.ReservationId equals reservation.ReservationId
            join ReservationStatus in _context.ReservationStatus
                 on reservation.ReservationStatusId equals ReservationStatus.ReservationStatusId
            where ((reservation.DateFrom >= search.DateTo) || 
                   (reservation.DateTo <= search.DateFrom)) && 
                   ReservationStatus.ReservationStatusId != 2
            select new RoomModel()
                       {
                           // code to add inside the model
                       }).ToList();

Это определенно не работает, так как у меня нет ни одного резервирования в моя база данных пока, но когда этот запрос дает 0 результатов, когда я ищу, хотя он должен перечислить все комнаты от размещения. Итак, в заключение, это должно показать мне любую доступную комнату, даже те, которые никогда не были зарезервированы ранее, и я считаю, что, поскольку я использую «бронирование резервирования», он включает только те комнаты, которые отображаются в записях Rooms_Reservations.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...