Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 取决于通过OData查询的当前用户的计算属性_Asp.net Core_Entity Framework Core_Odata - Fatal编程技术网

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
表联接

如何使其仅查询所需内容?

请查看此扩展