我有一个本质上递归的类模型。为简洁起见,我将其描述为:
我通常最终得到的对象图如下所示:
Root Template
|--> Sockets
|--> Socket S1
| |--> Templates
| |--> Template T1
| |--> Template T2
| |--> Sockets
| |--> Socket S1.1
|--> Socket S2
|--> Templates
|--> Template T2 <-- it's valid to reuse templates
|--> Template T3
etc
我希望一次性通过WCF数据服务返回整个对象图。
我已经为我的DataService添加了一个自定义方法来构建完整的图形:
[WebGet]
public IEnumerable<Template> GetFullyExpandedTemplate(Guid templateId)
{
var result = _templateRepo.GetFullyExpandedTemplate(a => a.Id == templateId);
return new List<Template>() { result };
}
结果肯定已完全填充(已验证。但如果我浏览以下内容:
http://localhost/MySite/MyDataService.svc/GetFullyExpandedAggregate?id=guid'353934DD-916E-43EC-9CAE-EAB8FA894EBA'
我只看到根模板对象 - 它不会带回整个图形。
关于最干净方法的任何想法都可以实现这一目标吗?
答案 0 :(得分:0)
$ expand url选项是否适合您?您可能必须切换到实体集上的查询而不是自定义方法。
答案 1 :(得分:0)
无法完成AFAIK。充其量,您可以拦截针对服务操作的请求并重定向到具有完全扩展的URI,但扩展路径仍然是静态的。