【问题标题】:Lifetime of scoped EF Core DbContext in WPFWPF 中作用域 EF Core DbContext 的生命周期
【发布时间】:2020-09-09 10:30:59
【问题描述】:

我想在 .NET Core 3.1 WPF 应用程序中使用 EF Core 和 .NET Core 依赖注入。

在 ASP.NET 中,作用域 DbContext 的生命周期是一个 HTTP 请求,但在 WPF 中,它是整个应用程序的生命周期,不建议这样做。

那么如何在 WPF .NET Core 应用程序中管理 DbContext 的生命周期?

【问题讨论】:

    标签: c# wpf .net-core dependency-injection entity-framework-core


    【解决方案1】:

    我建议这样定义:

    services.AddDbContext<AppDbContext>(options => options
            .UseSqlServer(configuration.GetConnectionString("LocalDB")), ServiceLifetime.Transient, ServiceLifetime.Transient);
    

    这样每个模型都有自己的 DbContext。

    另一种解决方案是声明 Singleton DbContextFactory 并调用其Create 方法以在每次使用时创建新的 DbContext。

    【讨论】:

    • 但是使用您的第二个解决方案,DbContext 什么时候会被处理掉?
    • @fel:在第二种情况下,您应该将Create 放在using 范围内。它适用于您运行并发任务或线程的情况
    猜你喜欢
    • 2014-05-18
    • 2012-03-15
    • 2023-01-22
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2013-08-12
    相关资源
    最近更新 更多