在我的应用程序中,我有章节,表格,轮次和玩家。
玩家从表开始,但每轮都转到其他表,并由他们开始的表识别。
在一个完美的宇宙中,我能够在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]
并从根级别上下文执行查询。
有一种更好的方法可以做到这一点,对吧?