我正在使用带有实体框架的 HotChocolate。对于某些字段,我们希望过滤一对多集合。
例子 :
public class Many
{
public int Id { get; set; }
public string? Name {get; set; }
}
public class User
{
public int Id { get; set; }
public List<Many> Manies { get; set; }
}
public class UserType : ObjectType<User>
{
protected override void Configure(IObjectTypeDescriptor<User> descriptor)
{
descriptor.BindFieldsExplicitly();
descriptor.Field(u => u.Id);
descriptor.Field("manies").Resolve(c => c.Parent<User>().Manies.Where(m => m.Name.StartsWith("A")).ToList());
}
}
我的第一个问题是:解析器是否按照 v10 的HotChocolate 文档所述并行执行?
当我在解析器中使用 async/await 时,我也遇到了问题。似乎在这种情况下(并且仅在这种情况下)解析器是在另一个线程上启动的(并且我遇到了 DbContext 并行执行的问题)。
例子 :
descriptor.Field("manies").Resolve(async c => {
var parent = c.Parent<User>();
return await GetFilterManiesAsync(parent);
});
但是当我强制同步时,没有并行问题:
descriptor.Field("manies").Resolve(c => {
var parent = c.Parent<User>();
return GetFilterManiesAsync(parent).Result;
});
所以我想了解,这是 HotChocolate 中的错误吗?或者并行管道是否仅在 async/await 解析器上启动。
PS 使用 HotChocolate v11.0.9
谢谢,