Извлечение поля с использованием лямбды из базы данных

У меня проблема при попытке объединить несколько таблиц в базе данных. На самом деле, я не совсем уверен, какой первичный ключ я должен использовать при создании соединения. Итак, допустим, у меня есть три таблицы, каждая из которых имеет собственный закрытый ключ с именами TownID, HotelID и RoomID. Соединение осуществляется через внешние ключи в таблице Hotel. Поэтому мой вопрос заключается в том, как с помощью данного идентификатора города можно извлечь информацию об определенном номере в отеле?

заранее спасибо

РЕДАКТИРОВАТЬ: отредактировал ошибку с внешним ключом

1 ответ

Решение
Table Town
-----------
TownId (PK)

TownName

Table Hotel
------------
HotelId (PK)

HotelAddress

HotelName

HotelTownId (FK)

HotelRoomId (FK)

Table Room
------------
RoomId (PK)

RoomNumber

При условии, что выше приведена схема этих таблиц, тогда вам нужно что-то вроде этого:

var result = (from h in db.Hotel
             join t in db.Town
             on h.HotelTownId equals t.TownId
             join r in db.Room
             on h.HotelRoomId equals r.RoomId
             where t.TownId == townId
             select r.RoomNumber).FirstOrDefault();

Вы можете написать вышеупомянутый запрос, используя лямбды. Однако в этой форме более читабельным.

Другие вопросы по тегам