Mic*_* B. 3 dependency-injection azure .net-core azure-functions azure-durable-functions
我想创建一个 Azure Durable Function,它将从 Internet 下载 CSV,并根据此文件中的数据,使用 EntityFramework 更新我的数据库。
我设置了使用 TimeTrigger 触发的简单启动功能。该函数负责启动协调器。协调器并行执行多个活动。大约有 40000 个工作项需要处理,这就是 Orchestrator 触发的活动数量。其中一些活动需要更新数据库(插入/更新/删除行)。为此,我需要一个数据库连接。我可以通过以下方式在 StartUp 中配置 DI:
public override void Configure(IFunctionsHostBuilder builder)
{
var connectionString = Environment.GetEnvironmentVariable("DefaultConnection");
builder.Services.AddDbContext<SqlContext>(options => options.UseSqlServer(connectionString));
builder.Services.AddScoped<IDbContext, SqlContext>();
}
}
Run Code Online (Sandbox Code Playgroud)
然而,我的所有函数(协调器、活动函数等)都是静态的,并且驻留在静态类中。我还没有看到任何在非静态类中定义持久函数的例子,当我自己尝试时,我遇到了各种各样的问题,所以我假设它们必须是静态的,而无需深入研究它。
我不知道如何将我的DbContext对象传递给 Activity 函数,以便它可以在需要时更新数据库中的数据。
我该如何解决呢?
\n\n我想创建一个 Azure Durable Function,它将从 Internet 下载 CSV,并根据此文件中的数据,使用 EntityFramework 更新我的数据库。
\n
通过以下方式在 StartUp 中配置 DI:
\npublic override void Configure(IFunctionsHostBuilder builder) {\n var connectionString = Environment.GetEnvironmentVariable("DefaultConnection");\n\n builder.Services.AddDbContext<IDbContext, SqlContext>(options => \n options.UseSqlServer(connectionString)); //To inject DbContext\n\n builder.Services.AddHttpClient(); //To inject HttpClient\n}\nRun Code Online (Sandbox Code Playgroud)\n确保在 Azure Functions Runtime V3+ 上托管函数应用,因此类和方法don\xe2\x80\x99t 必须是 静态的。
\n这将允许常规类具有带有可注入参数的非静态构造函数
\npublic class MyFunction {\n private readonly HttpClient httpClient;\n private readonly IDbContext dbContext;\n\n //ctor\n public MyFunction(IHttpClientFactory factory, IDbContext dbContext) {\n httpClient = factory.CreateClient();\n this.dbContext = dbContext;\n }\n\n [FunctionName("Function_Name_Here")]\n public async Task Run(\n [OrchestrationTrigger] IDurableOrchestrationContext context) {\n\n // ... access dependencies here\n\n }\n\n // ... other functions, which can include static, but they wont\n // have access to the instance fields.\n}\nRun Code Online (Sandbox Code Playgroud)\n本系列文章或许对您有帮助
\nAzure Durable Functions 实用指南 \xe2\x80\x94 第 2 部分:依赖项注入
\n| 归档时间: |
|
| 查看次数: |
4450 次 |
| 最近记录: |