我可能需要一些关于RIA服务查询的帮助,我已经为之挣扎了一段时间……
Person有一个DailyScore集合。
我希望能够生成同时对Person和DailyScore进行过滤的查询。
DateTime start = ...
DateTime end = ...
var personQuery = context.GetPersonQuery().Skip.(10).Take(10)
var scoresQuery = from s in ctx.GetDailyScoresForPeriod(start, end)
where personQuery.Contains(s.Person)
select s;
...load the scoresQuery理想情况下,我希望Person对象在指定的时间段内加载适当的DailyScores。n我们可以假定所有的“includes”也都已就绪。
这在RIA服务中是可能的吗?如果是这样,有人能给我正确的方法吗?如果没有,有什么解决办法吗?
我觉得这是一个简单的请求,所以希望这很容易。
谢了,谢恩。
另外,谁能给我推荐一个很好的在线资源,关于在客户端使用EntityQueries和RIA Services的规则?我一直在努力寻找这样的东西。
发布于 2011-08-23 10:12:01
实际上,您尝试执行的查询不受支持。在需要过滤集合中的数据时,不能使用Contains、Any和类似的构造。在这些场景中,您有两个选择:
var personQuery = context.GetPersonQuery().Skip.(10).Take(10);var scoresQuery =context.GetDailyScoresForPeriodQuery(开始,结束);//加载两个查询,然后: scores.Where(s => )在服务器中加载查询。这种方法的性能更好,但是您需要定义一种方法来过滤同一查询中的人员。例如,如果您只想要ids在特定范围内的人员,则应将此方法添加到您的域上下文中(在服务器中):
返回上下文( DateTime start,DateTime end,int firstPerson,int lastPerson) { return context .DailyScores .Where(s => s.Start > start && s.End < end) .Where(s => s.Person.ID >= firstPerson && s.Person.ID < lastPerson) }
然后在你的客户端中,你可以这样叫它:
context.GetDailyScoresForPeriodForPersons(start,scoresQuery = var end,10,20)
一些资源:
https://stackoverflow.com/questions/7155369
复制相似问题