IMongoCollection<T> 没有类型“MongoDB.Driver.IMongoCollection”的服务

问题描述

我正在尝试使用 MongoDB 和 HotChocolate 在 NetCore 中创建一个 GraphQL 服务器,查询类已经定义:

public class Query
   {
      [UseMongoDbPaging]
      [UseProjection]
      [UseSorting]
      [UseFiltering]
      public IExecutable<Area> GetAreas([Service] IMongoCollection<Area> collection)
      {
         return collection.AsExecutable();
      }

      [UseFirstOrDefault]
      public IExecutable<Area> GetAreaById(
         [Service] IMongoCollection<Area> collection,[ID] string id)
      {
         return collection.Find(x => x.Id == id).AsExecutable();
      }

   }

我正在关注 HotChocolate 文档中的这个示例: HotChocolate with mongoDb

但我收到此错误:

"extensions": {
        "message": "No service for type 'MongoDB.Driver.IMongoCollection`1[DLMDashboard.Server.Models.Area]' has been registered.","stackTrace": "   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider,Type serviceType)\n   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)\n   at HotChocolate.Execution.Processing.MiddlewareContext.Service[T]()\n   at lambda_method96(Closure,IResolverContext )\n   at HotChocolate.Types.FieldMiddlewareCompiler.<>c__DisplayClass3_0.<<CreateResolverMiddleware>b__0>d.MoveNext()\n--- End of stack trace from previous location ---\n   at HotChocolate.Data.MongoDb.Filters.MongoDbFilterProvider.<>c__DisplayClass5_0`1.<<CreateExecutor>g__ExecuteAsync|1>d.MoveNext()\n--- End of stack trace from previous location ---\n   at HotChocolate.Data.MongoDb.Sorting.MongoDbSortProvider.<>c__DisplayClass5_0`1.<<CreateExecutor>g__ExecuteAsync|1>d.MoveNext()\n--- End of stack trace from previous location ---\n   at HotChocolate.Data.MongoDb.MongoDbProjectionProvider.<CreateExecutor>g__ExecuteAsync|2_1[TEntityType](FieldDelegate next,IMiddlewareContext context)\n   at HotChocolate.Types.Pagination.PagingMiddleware.InvokeAsync(IMiddlewareContext context)\n   at HotChocolate.Utilities.MiddlewareCompiler`1.ExpressionHelper.AwaitTaskHelper(Task task)\n   at HotChocolate.Execution.Processing.ResolverTask.ExecuteResolverPipelineAsync(CancellationToken cancellationToken)\n   at HotChocolate.Execution.Processing.ResolverTask.TryExecuteAsync(CancellationToken cancellationToken)"
      }

这是我的startup.cs:

public void ConfigureServices(IServiceCollection services)
      {
          services.AddSingleton<IMongoClient,MongoClient>(sp => new
               MongoClient(Configuration.GetConnectionString("Connection"))
            );
         services.AddScoped(c => c.GetService<IMongoClient>()?.StartSessionAsync());
         
         services
            .AddGraphQLServer()
            .AddQueryType<Query>()
            .AddDefaultTransactionScopeHandler()
            .EnableRelaySupport()
            // Registers the filter convention of MongoDB
            .AddMongoDbFiltering()
             // Registers the sorting convention of MongoDB
             .AddMongoDbSorting()
             // Registers the projection convention of MongoDB
             .AddMongoDbProjections();

         services.AddInMemorySubscriptions();
         services.AddRedisSubscriptions((sp) =>
            ConnectionMultiplexer.Connect("host:port"));

      }

有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...