You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Functions的Query类中使用已声明的CosmosClient单例?

在Query类中使用CosmosClient单例的方法

你只需要通过构造函数注入来获取已注册的CosmosClient实例,这是依赖注入的标准方式,具体修改如下:

修改Query类

添加构造函数注入CosmosClient,并保存为私有成员变量,之后就能在方法里直接使用:

public class Query : IQuery
{
    private readonly CosmosClient _cosmosClient;

    // 构造函数注入CosmosClient单例
    public Query(CosmosClient cosmosClient)
    {
        _cosmosClient = cosmosClient;
    }

    public Result GetUser()
    {
        // 示例:使用_cosmosClient操作Cosmos DB
        // var container = _cosmosClient.GetContainer("你的数据库名", "你的容器名");
        
        User u = new User();
        
        return new Result
        {
            Status = 200,
            User = u,
        };
    }
}

验证Startup注册

你当前的Startup代码已经正确将CosmosClient注册为单例,无需修改:

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        var endPoint = Environment.GetEnvironmentVariable("COSMOS_DB_CONNECTION_STRING_EMULATOR");
        var masterKey = Environment.GetEnvironmentVariable("COSMOS_DB_MASTER_KEY_EMULATOR");
        
        builder.AddGraphQLFunction().AddQueryType<Query>();
        builder.Services.AddSingleton(_ => new CosmosClient(endPoint, masterKey));
    }
}

当GraphQL框架创建Query实例时,依赖注入容器会自动把你注册的CosmosClient单例传入构造函数,这样你就能在GetUser方法中使用该实例操作Cosmos DB了。

内容的提问来源于stack exchange,提问作者Sumchans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:50:12