Entity framework 实体框架关系定义问题

Entity framework 实体框架关系定义问题,entity-framework,Entity Framework,在我的应用程序中,我有分区、表格、回合和玩家 每个部分有N个表(表“键”:SectionId,TableId) 每个表有N个循环(循环“键”:SectionId、TableId、RoundNumber) 玩家从一张桌子开始,但每轮都会移动到其他桌子,并通过他们开始的桌子来识别 在一个完美的世界里,我可以在圆形对象上放置一组玩家,并在控制器中查询正确的玩家。我得到了机会,然后我会这样做: db.Entry(theRound) .Collection(p => p.Players) .

在我的应用程序中,我有分区、表格、回合和玩家

  • 每个部分有N个表(表“键”:SectionId,TableId)
  • 每个表有N个循环(循环“键”:SectionId、TableId、RoundNumber)
玩家从一张桌子开始,但每轮都会移动到其他桌子,并通过他们开始的桌子来识别

在一个完美的世界里,我可以在圆形对象上放置一组玩家,并在控制器中查询正确的玩家。我得到了机会,然后我会这样做:

db.Entry(theRound)  
.Collection(p => p.Players)
.Query()
.Where(p=> (p.SectionId == theRound.SectionId) &&
           ((p.TableNumber == theRound.NSPair && (p.Direction == "N" || p.Direction == "S")) ||
           (p.TableNumber == theRound.EWPair && (p.Direction == "E" || p.Direction == "W"))))
.Load();
问题是,一旦我在Round中声明了Player对象的集合,Entity Framework就会将上面三个Round键中每个键的“Round_XXXX”字段放入Player表中,并将其包含在该查询的where子句中。而且它找不到它们,因为它们与子弹无关……无论如何,从这个意义上说,也不是这样

将圆形对象与玩家开始使用的桌子对象相关联(除了“普通对象”)似乎是一个可怕的难题

我现在所做的是将Players集合注释为
[notmap]
,并从根级别上下文执行查询


有一种更好的方法可以做到这一点,对吗?

听起来更像是一个建模问题,而不是EF问题本身。例如,玩家不会有一个表号,因为随着时间的推移,玩家会在多个表上。玩家可能有一个初始表号,但这将是一个单独的关系。这只是一种识别玩家的历史方法。我是ac实际上,在这个应用程序中不使用该模型。正如我所说,将一轮与3个不同的表对象关联(这个表,以及参与其中的玩家来自哪个初始表)更糟糕的是)我只是想用一种合适的方式来定义某轮中哪些玩家的关系,而不需要实体框架来决定我的意思是我不想说的。