如何在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
相关产品推荐
相关产品推荐

