Asp.net core 取决于通过OData查询的当前用户的计算属性
我的Asp.net core 取决于通过OData查询的当前用户的计算属性,asp.net-core,entity-framework-core,odata,Asp.net Core,Entity Framework Core,Odata,我的零件具有十进制价格值。现在我只需要显示一个符合当前客户类型(用户)的Price。我还需要有OData控制器,以便用户可以查询部件 我尝试使用Select`(简化版本如下所示)映射到DTO: [启用查询] public IActionResult Get(){ var折扣=获取折扣(用户); 返回context.Parts.Select(x=>new{ 零件号=x.编号, 价格=x.基准价格*(1-折扣), ProductGroup=new{Name=x.ProductGroup.Name},
零件
具有十进制价格
值。现在我只需要显示一个符合当前客户类型(用户)的Price
。我还需要有OData控制器,以便用户可以查询部件
我尝试使用Select`(简化版本如下所示)映射到DTO:
[启用查询]
public IActionResult Get(){
var折扣=获取折扣(用户);
返回context.Parts.Select(x=>new{
零件号=x.编号,
价格=x.基准价格*(1-折扣),
ProductGroup=new{Name=x.ProductGroup.Name},
//其他映射。
});
}
注意:Part
实体中的所有属性都不应该从外部可见,所以我只映射可能可见的属性。还重命名了某些属性(例如,零件号
)
问题是,现在EF生成SQL查询,查询我在Select
中映射的所有列,即使它没有被请求。例如,即使ProductGroup
不在$expand
中,它也始终与ProductGroup
表联接
如何使其仅查询所需内容?请查看此扩展