簡體   English   中英

Wpf:在應用程序生命周期中使用單獨的 dbcontext

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM