gpt4 book ai didi

c# - 如何让 ODATA 序列化 NotMapped 属性

转载 作者:太空狗 更新时间:2023-10-29 17:45:47 29 4
gpt4 key购买 nike

我有一个 WebAPI 后端,它使用 ODATA v3 向各种客户端提供库存信息等(由于我们使用的组件的限制,我不能使用 v4)。库存数据库非常大(超过 10 万条记录),ODATA 非常适合服务器端过滤、分页等并保持数据传输精简。

库存记录有一些未映射的属性,而是在进行查询时即时计算和填充的。例如:

[NotMapped]
public decimal RebateAmount { get; set; }

问题是 ODATA 会忽略任何 NotMapped 属性,因此它们永远不会被发送回客户端。

我知道之前有人问过这个问题,但那是不久前的事了,所以我希望现在已经添加了对此的支持,或者有人有一个简单的解决方法(除了让 EF在数据库中创建这些字段)。

我已经尝试过这个丑陋的解决方法,但它没有用(回扣金额仍然没有被 ODATA 包含):

private decimal _rebateAmount;
public decimal RebateAmount { get {return _rebateAmount; } }

public void SetRebateAmount(decimal amount)
{
_rebateAmount = amount;
}

有没有一种(最好是简单的)方法可以在 ODATA 结果集中包含非数据库属性?

编辑 1/7/2017为了使它在我的场景中有用,ODATA 还需要在其元数据中包含计算字段,否则自动生成的(客户端)代理类将不包含它们。

最佳答案

我知道这是一篇旧文章,但在 WebApiConfig 文件中只需添加以下内容,它就会公开“NotMapped”属性。

builder.StructuralTypes.First(t => t.ClrType == typeof(YourModel)).AddProperty(typeof(YourModel).GetProperty("RebateAmount"));

“构建器”是您的 IEdmModel。最有可能在您的“GetEdmModel”方法中。

关于c# - 如何让 ODATA 序列化 NotMapped 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41492542/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com