OData Endpoint不会返回实体的所有属性

时间:2018-07-20 06:41:50

标签: c# odata asp.net-core-2.0 asp.net-core-webapi odata-v4

ASP.NET CORE 2 Web API-OData v4

我有一个使用以下端点启用了配置的项目,并且应返回实体-客户的AccountDetails

https://my.website/odata/accountdetails/{accountNumber}

我的项目有以下2个实体,

实体1:资产负债表

public class BalanceSheet{
    public int TotalBalance { get; set; }
    public int AvaialableBalance { get; set; }
}

实体2:帐户详细信息

public class AccountDetails{
    public int Name{ get; set; }
    public int AccountNumber { get; set; }
    public BalanceSheet Balance { get; set;}
}

我的OData的配置如下。

app.UseMvc(routebuilder =>
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

    builder.EntitySet<AccountDetails>("AccountDetails");

    routebuilder.MapODataServiceRoute("ODataCommon", "odata",   builder.GetEdmModel());
});
  

当我查询API以获取帐户详细信息时,理想情况下,我应该获得3个返回的属性-名称,帐户号和余额。

     

但是我得到名称和帐号,但没有余额吗?

我做错什么了吗?

1 个答案:

答案 0 :(得分:1)

  

我的项目有2个实体

似乎您只有一个实体AccountDetails,而另一个BalanceSheet是复杂类型。您已在Edm模型中注册AccountDetails实体,并且似乎缺少复杂类型注册。

在Edm模型中添加复杂类型应该可以解决此问题。

builder.ComplexType<BalanceSheet>();

如果它不起作用,请共享控制器代码和$ metadata