首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ResolveWith中的DbContext,HotChocolate GraphQL

ResolveWith中的DbContext,HotChocolate GraphQL
EN

Stack Overflow用户
提问于 2021-01-29 17:04:53
回答 1查看 484关注 0票数 2

所以我刚开始,我有一个实体,它不是通过直接关系保存来自其他实体的数据,而是保留EntityId和EntityType(枚举)。当我从GraphQL读取这些记录时,我希望使用解析器解析一个字段,如下所示,

代码语言:javascript
复制
        public class AssignmentResolver
        {
            public object GetEntity( Assignment assignment, AppDbContext context)
            {
                        if(assignment.EntityType == AssignmentEntityType.PERSON) 
                       {
                                return context.People.FirstOrDefault(x => x.Id == assignment.EntityId);
                       }
                       // And more checks
                      return null;
            }
        }

然后我可以说

代码语言:javascript
复制
    public class AssignmentQueryType: ObjectType<Assignment>
    {
        protected override void Configure(IObjectTypeDescriptor<Assignment> descriptor)
        {
            descriptor.Field("entity").ResolveWith<AssignmentResolver>(x => x.GetEntity(default!, default!));
        }
    }

我想知道这是对的还是有更好的方法。我的意思是,更好的方法是使用文档数据库,但这不是目前的选择。我也可能不是放置EntityType和EntityId,而是简单地设置与其他实体的实际关系,但我想看看这种当前的方式是否可行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-29 17:22:34

这可真快啊。

我找到我的问题了。似乎在解析器中,我不能仅仅返回一个对象,因为模式在被读取时应该是清晰的。

因此,在解析器中,如果我返回一个在所有这些实体之间共享的viewModel,那么我们就可以开始工作了。

因此,GetEntity代码将更改为

代码语言:javascript
复制
            public EntityViewModel GetEntity( Assignment assignment, [Service] AppDbContext context)
            {
                        if(assignment.EntityType == AssignmentEntityType.PERSON) 
                       {
                                var entity = context.People.FirstOrDefault(x => x.Id == assignment.EntityId);
                                return new EntityViewModel(entity);
                       }
                       // And more checks
                      return null;
            }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65951533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档