我正在使用带有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
现在我的任务是选择我想要的属性。名称+时间戳。
谢谢
答案 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
})
})