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

本文关键字:检索 属性 实体 查找 服务 数据 | 更新日期: 2023-09-27 18:35:48

我正在将 WCF 数据服务与实体框架 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

现在,我的任务是选择所需的属性。名称 + 时间戳。

谢谢

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

使用$select查询选项。例如,使用展开在上面的查询中,假设我想从类别中获取 Name 属性,从供应商中获取名称属性,从供应商中获取时间戳属性。查询可能如下所示:

~/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
        })
    })