所以我刚刚开始,我有一个实体,它不是通过直接关系而是通过保留 EntityId 和 EntityType(Enum) 来保存来自其他实体的数据。当我从 GraphQL 读取这些记录时,我希望使用解析器解析一个字段,如下所示,
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;
}
}
那我可以说
public class AssignmentQueryType: ObjectType<Assignment>
{
protected override void Configure(IObjectTypeDescriptor<Assignment> descriptor)
{
descriptor.Field("entity").ResolveWith<AssignmentResolver>(x => x.GetEntity(default!, default!));
}
}
我想知道这是正确的还是有更好的方法......我的意思是更好的方法是为此使用文档数据库,但目前这不是一个选择。我也可能不是放置 EntityType 和 EntityId 而是可以简单地设置与其他实体的实际关系,但我想看看这种当前方式是否可行。