数据服务 - 按子值查找实体 - 仅检索某些属性

时间:2012-05-30 08:40:54

标签: c# wcf wcf-data-services

我正在使用带有Entity Framework 4.1的WCF数据服务

我有2张表,有很多关系。我正在尝试根据子值获取实体。

Table 1 (Suppliers) -> ID (PrimaryKey) ,Name ,isEnabled ,Timestamp
Table 2 (Categories) -> RGID (PrimaryKey) , Name, etc....

我试图像这样编写URI。我的目标是检索具有RGID = 3的类别的所有供应商 - 名称和时间戳。

到目前为止我已经完成了

http://localhost/joybaservice/joybadataservice.svc/Categories(3)?$expand=Suppliers

现在我的任务是选择我想要的属性。名称+时间戳。

谢谢

1 个答案:

答案 0 :(得分:0)

使用$ select查询选项。例如,使用expand进行上面的查询,假设我想从Category获取Name属性,从Suppliers获取Name属性,从Suppliers获取Timestamp属性。查询可能如下所示:

~/Categories(3)?$expand=Suppliers&$select=Name,Suppliers/Name,Suppliers/Timestamp

如果要使用客户端上的LINQ(使用WCF数据服务客户端库)执行此操作,则无法使用AddQueryOption添加$ select(或任何其他$ query选项),而是需要表达意图使用LINQ的查询(这就是它的后续内容)。例如,上面的内容可能如此(取决于您的类的布局)。

ctx.Categories
  .Where(c => c.ID == 3)
  .Select(c => new Category()
    {
      Name = c.Name,
      Suppliers = c.Suppliers.Select(s => new Supplier()
        {
          Name = s.Name,
          Timestamp = s.Timestamp
        })
    })