首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RIA服务查询

RIA服务查询
EN

Stack Overflow用户
提问于 2011-08-23 09:24:50
回答 1查看 401关注 0票数 1

我可能需要一些关于RIA服务查询的帮助,我已经为之挣扎了一段时间……

Person有一个DailyScore集合。

我希望能够生成同时对Person和DailyScore进行过滤的查询。

代码语言:javascript
复制
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的规则?我一直在努力寻找这样的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-23 10:12:01

实际上,您尝试执行的查询不受支持。在需要过滤集合中的数据时,不能使用ContainsAny和类似的构造。在这些场景中,您有两个选择:

  • 分别执行这两个查询,然后筛选客户端上的数据。这种方法存在性能问题,因为您要从服务器检索所有数据,然后将其过滤掉。在您的例子中,您应该是这样的:

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)

一些资源:

  • Domain Context and Operations
  • Walkthrough: Adding Query Methods
  • RIA Services and relational data
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7155369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档