gpt4 book ai didi

Asp.Net Core 运行一次功能

转载 作者:行者123 更新时间:2023-12-02 04:36:29 25 4
gpt4 key购买 nike

启动 Asp.Net Core 时,我必须通过 EntityFrameworkCore 调用数据库,我必须在用户“ session ”期间只运行一次

有什么建议吗?

最佳答案

我通常使用 IHostedService。有一个great article通过 Andrew Lock .
本质上,您要做的是实现 IHostedService 接口(interface)并将您的数据库代码放在 StartAsync 方法中。

public class MigratorHostedService: IHostedService
{
// We need to inject the IServiceProvider so we can create
// the scoped service, MyDbContext
private readonly IServiceProvider _serviceProvider;
public MigratorStartupFilter(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}

public async Task StartAsync(CancellationToken cancellationToken)
{
// Create a new scope to retrieve scoped services
using(var scope = _seviceProvider.CreateScope())
{
// Get the DbContext instance
var myDbContext = scope.ServiceProvider.GetRequiredService<MyDbContext>();

//Do the migration asynchronously
await myDbContext.Database.MigrateAsync();
}
}

public Task StopAsync(CancellationToken cancellationToken)
{
// noop
return Task.CompletedTask;
}
}
此代码直接取自所提到的文章,仅用于回答所提出的问题。所有信用必须转到 Andrew Lock

关于Asp.Net Core 运行一次功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42227063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com