1

我正在将 WCF 数据服务与 Entity Framework 4.1 一起使用

我有 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

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

谢谢

4

1 回答 1

0

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

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

如果您想使用客户端上的 LINQ(使用 WCF 数据服务客户端库)执行此操作,则不能使用 AddQueryOption 添加 $select(或任何其他 $ 查询选项),而是需要表达查询的意图使用 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
        })
    })
于 2012-05-30T11:49:13.433 回答