1

我正在尝试使用 oData 查询 WCF 数据服务。一切正常,但在多对多关系中,扩展函数不起作用。关系是:Product 1-* ProductOrder *-1 Order 这是我查询服务的代码:

var queryProductOrder = (DataServiceQuery<ProductOrder>)SessionHelper.context.ProductOrder.Expand(x=>x.Product);
var allProductOrders = await queryProductOrder.ExecuteAsync();

如果我在调试模式下运行它并检查 allProductOrder 对象,则没有产品。有趣的事实是,当我检查生成的 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"}]}

同样令人困惑的是,在其他多对多关系上,expand 方法的工作方式应该如此。

为什么它不扩展allProductOrders对象?为什么是allProductOrders.First().Product对象null,但生成的 OData 查询返回扩展数据?

4

0 回答 0