Wpf:在应用程序生存期内使用单独的dbcontext

问题描述 投票:0回答:1

我有一个带有依赖项注入的wpf应用程序。我将上下文注册为可在以下应用程序中使用的服务。

serviceCollection.AddDbContext<Context>(p => p.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));

我有另一个服务,应该每隔15秒从数据库中获取数据,以检查是否添加了新实体,并使用事件服务进行操作,并在MainWindow.xaml启动时启动该服务,然后转到另一个线程。] >

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    Task newOrdersTask = _eventService.SubscribeToNewOrders();
}

但是有时在使用应用程序时会出现此错误。

在上一个操作完成之前在此上下文上开始第二个操作

我如何处理这些情况?

我有一个带有依赖项注入的wpf应用程序。我将上下文注册为可在以下应用程序中使用的服务。 serviceCollection.AddDbContext (p => p.UseSqlServer(configuration ....

wpf dependency-injection entity-framework-core thread-safety dbcontext
1个回答
0
投票

ServiceLifetime.Transient添加为AddDbContext的第二个参数将强制每次由容器注入时创建一个新的DbContext。但是,通过这样做,您将错过EF Core DbContext默认提供的许多功能。您应该考虑实现“ ambient context pattern”以某种方式保留这些功能。

© www.soinside.com 2019 - 2024. All rights reserved.