我正在尝试使用oData查询WCF数据服务。一切正常,但在多对多关系中,扩展功能不起作用。关系是:Product 1-* ProductOrder *-1 Order
这是我查询服务的代码:
var queryProductOrder = (DataServiceQuery<ProductOrder>)SessionHelper.context.ProductOrder.Expand(x=>x.Product);
var allProductOrders = await queryProductOrder.ExecuteAsync();
如果我在调试模式下运行它并检查allProductOrder对象,则没有Product。有趣的是,当我检查生成的OData查询并通过浏览器运行它时,产品会扩展。
查询如下所示:
http://localhost:10000/ProductOrder()?$expand=Product
扩展了JSON-Result:
{"odata.metadata":"http://localhost:10000/$metadata#ProductOrder","value":[{"Product":{"id":1,"Name":"Die Sims","Tax_fk":1,"Price":"44.99","Description":"Lebenssimulation","Stock":"99.00","TotalOrder":"0.00","ProductUnit_fk":1,"Barcode":"121212121","MainImage_fk":null,"Tenant_fk":1,"PurchasePrice":null},"id":1,"Product_fk":1,"Order_fk":1,"Tenant_fk":1,"Amount":"10"}]}
同样令人困惑的是,在其他多对多关系中,扩展方法的工作方式应该如此。
为什么它不展开allProductOrders
对象?为什么allProductOrders.First().Product
对象null
但生成的OData查询返回扩展数据?