c# - 如何在容器中配置 dbcontext?

标签 c# asp.net-core

我在启动时创建 Entity Framework 数据库上下文

 services.AddTransient<MyContext>(_ => new MyContext(connectionString));

我在每个需要 Entity Framework 来添加/编辑/删除或其他任何东西的服务类中注入(inject)这个上下文。

private readonly MyContext context;

public ArchiveService(MyContext context)
{
    this.context = context;
}

对于 IoC,我使用的是 Microsoft.Extensions.DependencyInjection。 这意味着我的依赖注入(inject)容器负责处理数据库上下文。

我如何确定上下文已被释放?

我是否需要配置一些东西来处理数据库上下文?

谢谢你的帮助。

最佳答案

在 asp.net core 中,您使用 AddTransient 注册的所有服务都与范围一起处理,因此 - 当请求结束时。那么您可能会问 TransientScoped 有什么区别?对于 Transient - 为每个分辨率创建新实例。在您的情况下 - 您的所有服务类都将具有不同的 MyContext 实例。当请求结束时,所有这些都将被处理掉。对于 Scoped - 只会为给定的请求(范围)创建一个实例,因此您的所有服务将共享同一个实例,该实例在请求结束时被释放。

关于c# - 如何在容器中配置 dbcontext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40606171/

相关文章:

c# - ASP.NET Core ViewLocationExpander 在其他程序集中找不到 View

c# - asp.net core中的托管服务(后台服务)在每个Publish azure中重新启动

c# - 在 C# 中使用 OLEDB 从 Excel 中选择单元格地址

c# - 我的 WPF 组合框中的绑定(bind)不起作用?

c# - 将目录路径转换为 ​​JSON 目录树表示

c# - 检查 Razor 页面中的登录用户角色

c# - 如何在 ASP.NET Core 中定义和使用不同的用户类型

c# - 如何维护 3 个网站之间的语言?

asp.net-core - ASP.NET 5 复杂 TagHelper

c# - OpenNI C# 包装器 : WaitAnyUpdateAll timeout