[英]Wpf: using separate dbcontext in application lifetime
我有一個帶有依賴注入的 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();
}
但有時在使用應用程序時我會收到此錯誤。
在前一個操作完成之前在此上下文上啟動了第二個操作
我該如何處理這些情況?
在整個應用程序中使用 singleton DbContext 是一個壞主意,尤其是在考慮使用不同線程時。
將ServiceLifetime.Transient
作為第二個參數傳遞給AddDbContext
將在每次被容器注入時強制創建一個新的 DbContext。 但是,這樣做會錯過很多 EF Core DbContext 默認提供的功能。 您可以考慮實現類似“環境上下文模式”的東西以某種方式保留這些功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.