实体框架关系定义问题

时间:2017-05-13 08:01:48

标签: entity-framework

在我的应用程序中,我有章节,表格,轮次和玩家。

  • 每个部分都有N个表(表"键":SectionId,TableId)。
  • 每张表都有N轮(Round" Keys":SectionId,TableId,RoundNumber)

玩家从表开始,但每轮都转到其他表,并由他们开始的表识别。

在一个完美的宇宙中,我能够在Round对象上放置一个玩家集合,并在我的控制器中查找正确的玩家。我得到了回合,然后我做了这样的事情:

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中声明了玩家对象的集合,实体框架就会出现" Round_XXXX"上面三个Round键中每个键的字段进入Players表,包括该查询的where子句中的字段。并且它找不到它们,因为它们与Rounds没有关联......不管怎么说,不管怎么说。

将Round对象与玩家开始时的表对象相关联(除了它"正常之外)似乎是一个糟糕的kludge。

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

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

0 个答案:

没有答案