Microsoft.OData.Client $expand 不填充模型
Microsoft.OData.Client $expand does not populate the model
我正在使用基于 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
我可以在 fiddler 中看到 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
确实存在。
问题是 EDMXTrimmer 删除了导航属性。
EDMXTrimmer 已被修复。
我正在使用基于 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
我可以在 fiddler 中看到 JSON.
然而,当我检查结果变量(或查看输出)时,没有 SalesOrderLines 属性。因此,订单行尚未从从 oData 源下载的数据映射到我的结果对象中。
重要说明:我正在使用 EDMXTrimmer 来减少客户端中的实体数量,如果我缺少加入实体,这会是个问题吗? (在这种情况下似乎不太可能有加入实体)
线索?
当我尝试更改此行时:
var result = context.SalesOrderHeadersV2.Expand(x=>x.SalesOrderLines).Take(1).ToList();
它不会编译因为'SalesOrderHeaderV2' does not contain a definition for 'SalesOrderLines' ...
注意:context.SalesOrderLines
确实存在。
问题是 EDMXTrimmer 删除了导航属性。
EDMXTrimmer 已被修复。