【发布时间】:2017-05-20 10:32:52
【问题描述】:
我有一个 WebAPI 后端,它使用 ODATA v3 向各种客户端提供库存信息等(由于我们使用的组件的限制,我不能使用 v4)。库存数据库非常大(超过 10 万条记录),ODATA 非常适合服务器端过滤、分页等,并保持数据传输精简。
库存记录具有一些未映射的属性,而是在进行查询时动态计算和填充的。例如:
[NotMapped]
public decimal RebateAmount { get; set; }
问题在于 ODATA 会忽略任何 NotMapped 属性,因此它们永远不会被发送回客户端。
我知道以前有人问过这个问题,但那是不久前的事了,所以 我希望现在已经添加了对此的支持,或者有人有一个简单的解决方法(没有让 EF在数据库中创建这些字段)。
我已经尝试过这种丑陋的解决方法,但它不起作用(ODATA 仍然不包含 RebateAmount):
private decimal _rebateAmount;
public decimal RebateAmount { get {return _rebateAmount; } }
public void SetRebateAmount(decimal amount)
{
_rebateAmount = amount;
}
是否有一种(最好是简单的)方法可以在 ODATA 结果集中包含非 DB 属性?
2017 年 1 月 7 日编辑 为了在我的场景中有用,ODATA 还需要在其元数据中包含计算字段,否则自动生成的(客户端)代理类将不包含它们。
【问题讨论】:
标签: c# entity-framework asp.net-web-api odata