У меня есть 3 таблицы (и соответствующие сущности в модели сущностей)
Игра:
Id - первичный ключ
... другие столбцы
Игрок:
Id - первичный ключ
... другие столбцы
GamePlayer (игрок может участвовать во многих играх)
GameId -> внешний ключ от Game
PlayerId -> внешний ключ от Player
... другие столбцы
В моем коде у меня есть gameId и playerId, доступные через другие средства. Используя это, я хочу знать, участвует ли игрок (playerId) в определенной игре (gameId). Итак, я делаю это: (лица мой объект контекста)
IQueryable query = entity.GamePlayer.where (gp => ((gp.Game.Id == gameId) && (gp.Player.Id == playerId)))
Если запрос возвращает строку, то я знаю, что игрок участвует в этой игре.
Я читаю несколько блогов MSDN по ссылкам на сущности, и я запутался Похоже, что MSDN рекомендует сначала проверить объект EntityReference на наличие IsLoaded и, если он не загружен, загрузить объект и ТОЛЬКО затем использовать его в запросе.
GamePlayer имеет GamePlayer.GameReference и GamePlayer.PlayerReference, но я не могу проверить, загружена ли ссылка, потому что у меня нет объекта GamePlayer в руке. Таблица GamePlayer содержит две взаимосвязи 1 ... * и все. Я должен запросить GamePlayer только используя GameId и PlayerId. Что я тут не так делаю?
Должен ли я вместо этого получить объект Player (или Game) (используя их идентификаторы) и вместо этого проверить коллекцию сущностей GamePlayer? Sql было так просто. Если это так наивно, извините, мне трудно перевести мой sql-запрос на запросы сущностей.