c# - OData 端点不返回实体的所有属性

标签 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: Assets 负债表

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());
});

When i query the API to get the account details, ideally i should be getting 3 properties returned which are - Name, AccountNumber & Balance.

But i get Name and the AccountNumber but not the Balance?

难道我做错了什么吗?

最佳答案

My Project has 2 entities

您似乎只有一个实体 AccountDetails ,而另一个 BalanceSheet 是一种复杂类型。您已在 Edm 模型中注册了 AccountDetails 实体,但复杂类型注册似乎丢失。

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

builder.ComplexType<BalanceSheet>();

如果不起作用,请分享 Controller 代码和$元数据

关于c# - OData 端点不返回实体的所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51436527/

相关文章:

c# - ASPNetCore API IFormFile 返回 "invalid input"

c# - 无法获取用户的 Windows 登录名?

C# 如何在 web 服务中返回我的基类

c# - 我可以确定自己的 C# 入口点方法吗

c# - 如何使用 C# 解码 URL 参数?

c# - JSON 返回 PascalCase 格式的属性,而不是 CamelCase 格式

asp.net - 可以手动将 OData 参数应用于 `.AsQueryable()` 的结果吗?

c# - 路径中的语义错误。/MyType.get.responses.200.schema.$ref $ref 值必须是符合 RFC3986 的百分比编码 URI

c# - 当 ASP.NET Core 应用程序关闭时,如何正确安全地处理在容器中注册的单例实例

c# - 是否可以在没有 Microsoft.AspNetCore.All 包的情况下创建 ASP.NET Core 2.0 项目?