【发布时间】:2009-02-06 08:12:14
【问题描述】:
我有 3 个表(以及实体模型中的对应实体) 游戏: Id - 主键 ...其他列
玩家: Id - 主键 ...其他列
GamePlayer(一个玩家可以参与很多游戏) GameId --> 来自游戏的外键 PlayerId --> 来自 Player 的外键 ...其他列
在我的代码中,我可以通过其他方式获得 gameId 和 playerId。使用这个我想知道玩家(playerId)是否正在参与特定的游戏(gameId)。所以我这样做:(实体是我的上下文对象)
IQueryable 查询 = 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 查询转换为实体查询。
【问题讨论】:
标签: ado.net foreign-keys ado.net-entity-data-model entityreference