Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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
C# 使用Automapper 10.1.1和HotChocolate 11.1映射查询表_C#_Entity Framework Core_Automapper_Hotchocolate - Fatal编程技术网

C# 使用Automapper 10.1.1和HotChocolate 11.1映射查询表

C# 使用Automapper 10.1.1和HotChocolate 11.1映射查询表,c#,entity-framework-core,automapper,hotchocolate,C#,Entity Framework Core,Automapper,Hotchocolate,我正试图用Automapper投影我的EF核心查询,以允许在我的应用程序中使用第三层,但我在允许HotChocolate请求DTO上的字段并告诉Automapper在投影过程中包含这些字段时遇到了一些问题 一些要点: 当两个属性都存在时,Automapper将请求地图上的所有NavigationProperties 除非存在ExplicitExpansion设置 如果在地图上设置了ExplicitExpansion,则热巧克力无法使用[UseProjection] 因此,我可以一次加载所有导

我正试图用Automapper投影我的EF核心查询,以允许在我的应用程序中使用第三层,但我在允许HotChocolate请求DTO上的字段并告诉Automapper在投影过程中包含这些字段时遇到了一些问题

一些要点:

  • 当两个属性都存在时,Automapper将请求地图上的所有NavigationProperties
  • 除非存在
    ExplicitExpansion
    设置
  • 如果在地图上设置了
    ExplicitExpansion
    ,则热巧克力无法使用
    [UseProjection]
因此,我可以一次加载所有导航属性,也可以不加载

如何让ether HotChocolate映射我的
IQueryable
中的实体,或者如何在查询函数中获取所需的键,以便使用
IQueryable.ProjectTo()
方法告诉AutoMapper要展开哪些属性?

是否尝试过

公共类查询
{
[UseProjection]//svc.GetFooDtos();
}
如果投影不是太复杂,这应该是可行的

如果投影顺序有问题,还可以创建自定义属性

公共类YourCustomMiddlewareAttribute:ObjectFieldDescriptorAttribute
{
配置中的公共覆盖无效(
IDescriptorContext上下文,
IObjectFieldDescriptor描述符,
会员信息(会员)
{ 
descriptor.Type();
descriptor.Use(下一步=>异步上下文=>
{
等待下一个(上下文);
if(context.Result为可查询人员)
{ 
context.Result=人
.ProjectTo()
.ToListAsync(context.RequestAborted);
}
})
}
}
公共类查询
{
[你的客户中间件]
[使用投影]
公共IQueryable GetFoos([Service]YourService svc)=>svc.GetFooDtos();
}

不幸的是,这不起作用。热巧克力投影是在automapper在
GetFooDtos
中投影实体并因此扩展了所有或无导航属性之后应用的。这是我在3点中使用和解释的问题。有没有办法获取HotChocolate请求的所有字段?然后我可以在查询中使用它们来告诉AutoMapper应该扩展哪些字段。如果订单有问题,您还可以创建自定义属性。我会更新答案嘿,非常感谢你的想法,使用定制的中间件,这绝对是朝着正确的方向迈出的一步。但现在我犯了一个错误。当我更改结果类型时,热巧克力似乎不喜欢它。错误:您确实有权访问该类型,因此您也可以更改该类型,我将再次更新