【问题标题】:WCF Data Service : Many to many queryWCF 数据服务:多对多查询
【发布时间】:2011-04-28 00:18:56
【问题描述】:

所以我有这个数据库模型:

Student<->StudentClasses<->Classes

其中 1 个学生链接到多个 StudentClasses,一个班级链接到多个 StudentClasses。

如何编写 LINQ 查询以获取与 ID 为 1 的学生相关联的所有课程?

以下查询引发异常 (“只能在最后一次导航后指定查询选项(orderby、where、take、skip)。”):

                     var qry = from sc in service.StudentClasses
                      where sc.StudentId == 1
                      from c in service.Classes
                      where c.ClassId == sc.StudentId
                      select c;

【问题讨论】:

  • 这是一个与此处类似的问题:stackoverflow.com/questions/5746992/linq-query-error/… LINQ 不支持您尝试执行的操作。因此,您需要创建多个查询,或者扩展和拉回超出您需要的范围。
  • 你在使用 linq to sql 吗?还是其他 ORM?
  • 他正在使用 LINQ to ODATA/rest。

标签: c# .net linq wcf-data-services


【解决方案1】:

这可行,但如果您使用 ID DNE,它会崩溃。

var qry =  service.StudentClasses
              .Expand("Classes")
              .Where(x=>x.StudentId==1)
              .First()
              .Classes.Select(t=>t);

【讨论】:

  • 有没有比使用 WCF 数据服务更好的公开数据库的方法?
  • 视情况而定,如果您正在做简单的瘦客户端的事情,并且没有业务逻辑,DataServices 是要走的路,如果您要进行复杂的查询,请创建一些自定义查询。我不喜欢用于数据服务的客户端 API,也不喜欢让客户能够以他们选择的任何方式查询我的数据/更改我的数据。因此,我倾向于控制人们如何通过 Web 服务和数据访问层访问我的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多