Получить данные с одинаковым идентификатором HotelID - PullRequest
0 голосов
/ 03 мая 2018

В моей базе данных SQL Server есть две таблицы: Room и Hotel. HotelID - это внешний ключ в таблице Room. В таблице Room есть 2 комнаты с HotelID = 1.

Моя цель - попытаться получить HotelID в методе GET, тогда результат должен показать информацию об отеле и информацию Room, которые имеют тот же HotelID в таблице Hotel ,

То, что я получил из своего кода, показало только 1 комнату. Предполагается показать 2 комнаты

{"item1":{"hotelID":1,"hotelName":"Dope Hotel","hotelAddress":"1234 Test St","hotelCity":"asdf","hotelState":"AB","hotelZip":"56452","hotelCountry":"USA","hotelPhone":"8081234567"},"item2":{"roomID":1,"roomName":"Ocean View","roomDescription":"This is room Description","hotelID":1}}

Вот мой код:

[HttpGet]
[Route("api/hotel/gethotel/{HotelID}")]
public IActionResult GetByHotelID(int HotelID, string[] roominfo)
{
        //check if the hotel ID is the same as the db hotelID
    var hotelinfo = _context.Hotels.FirstOrDefault(t => t.HotelID == HotelID);

    if (hotelinfo == null)
    {
        //if no item matches return id returning a http404 response
        return NotFound();
    }

    //return 200 with JSON response body, returning ObjectResult
    var rroominfo = _context.Rooms.FirstOrDefault(t => t.HotelID == HotelID);
    var hrinfo = (hotelinfo, rroominfo);

    if (rroominfo == null)
    {
        return new ObjectResult(hotelinfo);
    } 
    else
    {
        return new ObjectResult(hrinfo);
    }
}

Мой вопрос: как мне получить несколько комнат для моего результата, который включает в себя одинаковые HotelID?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Я думаю, что вы можете использовать Include () для загрузки номеров в отель

var hotelinfo = _context.Hotels.Include(x => x.Rooms).FirstOrDefault(t => 
t.HotelID == HotelID);
0 голосов
/ 03 мая 2018

Я думаю, используя

var rroominfo = _context.Rooms.FirstOrDefault(t => t.HotelID == HotelID);

заставляет вас получить только одну комнату. Возвращает только первую комнату с указанным идентификатором отеля. Попробуйте использовать

_context.Rooms.Where(t => t.HotelID == HotelID);

вместо.

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