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

tha*_*ssd 8 entity-framework entity-framework-core blazor blazor-server-side

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

到目前为止我一直在做

using var context = _contextFactory.CreateDbContext();
//Then use the context...
Run Code Online (Sandbox Code Playgroud)

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

所以我的问题是我应该更喜欢一个版本而不是另一个版本吗?上下文创建是否是一个昂贵/可能阻塞的操作,需要异步操作?

Dav*_*oft 12

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

回想起来,我们可能不应该添加这个

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