Blazor 的 IDbContextFactory:何时使用 CreateDbContextAsync 异步版本与 CreateDbContext

IDbContextFactory for Blazor: when to use CreateDbContextAsync the async version vs CreateDbContext

我在处理 Blazor 服务器项目时开始使用 IDbContextFactory.CreateDbContext。我知道这个接口是为 Blazor 创建的,用于解决有状态 Blazor 服务器应用程序中的 DbContext 并发问题。

到目前为止我一直在做

using var context = _contextFactory.CreateDbContext();
//Then use the context...

但我刚刚发现该方法有一个异步版本,IDbContextFactory.CreateDbContextAsync 文档只是说“在异步上下文中创建一个新的 DbContext 实例”。

所以我的问题是我应该更喜欢一个版本而不是另一个版本?上下文创建是保证异步操作的 expensive/potentially 阻塞操作吗?

它目前没有实际用途。 DbContext 初始化不执行任何 IO 或网络访问,并且您可能执行的扩展点(OnConfiguring 上的 DbContext 构造函数)本身不是异步的。

In retrospect, it's possible we should not have added this

https://github.com/dotnet/efcore/issues/26630