我正在努力将设计粗劣的 REST API 转换为带有 Entity Framework Core 和 Hot Chocolate 的流畅 GraphQL API。
我目前正在通过 公开我的整个数据库UseProjection。我的数据库包含一个表Foo,该表的外键Bar具有 property Baz。
目前这被曝光为:
Foo {
Bar {
Baz
}
}
Run Code Online (Sandbox Code Playgroud)
就我而言,Foo有Bar1:1 的关系。我想隐藏BarAPI,并公开以下内容:
Foo {
Baz
}
Run Code Online (Sandbox Code Playgroud)
我在 中添加了以下内容FooType.cs:
descriptor
.Field("Baz")
.Resolve(ctx => ctx.Parent<Foo>().Bar?.Baz);
Run Code Online (Sandbox Code Playgroud)
Baz 如果我运行在两个级别进行访问的查询,则 GQLBaz在两个级别都会正确返回。但是,如果我省略 3 级请求,则 SQL 调用永远不会Baz从数据库中提取,因此 2 级请求返回null.
热巧克力文档说你可以通过添加以下内容来解决这个问题:
descriptor
.Field(Foo => Foo.Bar)
.IsProjected(true);
Run Code Online (Sandbox Code Playgroud)
但是,当我使用此代码运行查询时,我收到错误A composite type …