Entity framework core 如何同时从不同Blazor组件进行数据调用?

Entity framework core 如何同时从不同Blazor组件进行数据调用?,entity-framework-core,blazor,Entity Framework Core,Blazor,我是Blazor的新手,尝试用几个独立的组件来创建一个页面来处理一个庞大的表单。每个单独的组件都包含表单的一部分 我面临的问题是,我的每个组件都需要从后端访问数据,而不是每个组件都使用相同的数据。加载页面时,每个组件都会尝试从服务器获取数据,这会导致实体框架出现问题 在上一个操作之前,在此上下文上启动了第二个操作 完整的。这通常是由使用相同线程的不同线程引起的 DbContext的实例 这显然是由于我的组件是同时初始化的,并且都试图同时加载数据。我的印象是,DI在Blazor中的设置方式不会有问

我是Blazor的新手,尝试用几个独立的组件来创建一个页面来处理一个庞大的表单。每个单独的组件都包含表单的一部分

我面临的问题是,我的每个组件都需要从后端访问数据,而不是每个组件都使用相同的数据。加载页面时,每个组件都会尝试从服务器获取数据,这会导致实体框架出现问题

在上一个操作之前,在此上下文上启动了第二个操作 完整的。这通常是由使用相同线程的不同线程引起的 DbContext的实例

这显然是由于我的组件是同时初始化的,并且都试图同时加载数据。我的印象是,DI在Blazor中的设置方式不会有问题,但确实有问题

以下是我的模板中的组件:

<CascadingValue Value="this">
    <!-- BASE DATA -->
    <CharacterBaseDataView />

    <!-- SPECIAL RULES -->
    <CharacterSpecialRulesView />
</CascadingValue>
当具有上述代码的两个组件位于同一视图中时,会发生上述错误。我使用同步版本“OnInitialized()”执行线程,并简单地放弃任务,但这并没有修复错误


是否有其他方法调用数据以避免出现此问题?还是我的做法不对?

在EF中使用异步操作时遇到了一个常见问题—两个或多个操作试图同时使用相同的上下文


看一看-下面有一个部分专门针对Blazor。它解释了如何使用
DbContextFactory
CreateDbContext
为工作单元创建上下文,即每个操作一个上下文,这样两个异步操作都有一个单独的上下文。

很好,修复了它。未来读者注意:上述文档依赖于Core 5.0中提供的函数/类。我仍然在使用3.0,必须升级才能让它工作。如果使用IdentityFramework,还需要在启动类中进行常规上下文实例化。