Microsoft.OData.Client $ expand不会填充模型

时间:2019-10-07 05:24:35

标签: dynamics-crm odata microsoft-odata

我正在使用基于microsoft sample application的Microsoft.OData.Client。
这是我简单的WebAPI控制器:

    [Route("test")]
    [HttpGet]
    public IHttpActionResult Test()
    {
        var context = _dynamicsContextFactory.CreateContext();
        // adding this had no effect // context.MergeOption = MergeOption.AppendOnly;
        // adding this had no effect // context.MergeOption = MergeOption.OverwriteChanges;
        // adding this had no effect // context.MergeOption = MergeOption.NoTracking;
        // adding this had no effect // context.MergeOption = MergeOption.PreserveChanges;
        var result = context.SalesOrderHeadersV2.Expand("SalesOrderLines").Take(1).ToList();
        return Ok(result);
    }

客户端生成正确的URL。 https://example.com/data/SalesOrderHeadersV2?$top=1&$expand=SalesOrderLines 我可以在提琴手中看到JSON中返回的SalesOrderLines属性。

但是,当我检查结果变量(或查看输出)时,没有SalesOrderLines属性。因此,订单行尚未从从oData来源下载的数据映射到我的结果对象中。

重要说明:我正在使用EDMXTrimmer来减少客户端中实体的数量,如果我缺少加入实体,这可能会成为问题吗? (在这种情况下,似乎不太可能有加入实体)

线索?
当我尝试更改此行时:

var result = context.SalesOrderHeadersV2.Expand(x=>x.SalesOrderLines).Take(1).ToList();

由于'SalesOrderHeaderV2' does not contain a definition for 'SalesOrderLines' ...
它不会编译 注意:context.SalesOrderLines确实存在。

1 个答案:

答案 0 :(得分:1)

问题是EDMXTrimmer删除了导航属性。
EDMXTrimmer已修复。