我有 3 个表(以及实体模型中的相应实体) Game: Id - primay key ... 其他列
Player: 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 建议我首先必须检查 IsLoaded 的 EntityReference 对象,如果没有加载,我必须加载实体,然后我才应该在查询中使用它。
GamePlayer 确实有 GamePlayer.GameReference 和 GamePlayer.PlayerReference,但我无法检查是否加载了引用,因为我手头没有 GamePlayer 对象。GamePlayer 表包含两个 1...* 关系,仅此而已。我必须仅使用 GameId 和 PlayerId 查询 GamePlayer。我在这里做错了什么?
我应该改为获取玩家(或游戏)对象(使用他们的 ID)并检查 GamePlayer 实体集合吗?Sql 就是这么简单。如果这太天真了,对不起,我很难将我的 sql 查询转换为实体查询。