mysql dbcontext 怎么连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql dbcontext 怎么连接相关的知识,希望对你有一定的参考价值。

参考技术A 1.从官方网站下载ABP项目模板,并解压到本地,用VS打开,这里我们新建一个项目Connectmysql
2.设置XXX.Web为启动项目,Build这个Solution,使得NuGet下载相关的包。
3.准备好一个SQL Server数据库,修改Web.config数据库的ConnectionString,连接到SQL Server数据库。
4.打开Package Manager Console窗口,选择XXX.EntityFramework为默认项目,运行Update-Database命令,系统会在SQL Server中创建数据库和对应的表。本回答被提问者采纳

我是不是需要手动关闭 EF 核心 Dbcontext 连接

【中文标题】我是不是需要手动关闭 EF 核心 Dbcontext 连接【英文标题】:Do I need to close EF core Dbcontext connection manually我是否需要手动关闭 EF 核心 Dbcontext 连接 【发布时间】:2021-08-17 02:57:59 【问题描述】:

我为我的 Web 应用程序使用了 EF 核心,并在那里初始化 dbcontext 我使用了构造函数依赖注入。

   private readonly ERPDB_GlobalContext _dbContext;
   public ProductCategoryController(ERPDB_GlobalContext dbContext)
   
       _dbContext = dbContext;
       
   

使用依赖注入后,我直接使用 _dbcontext 进行 CRUD 操作,而不使用 using 范围。所以我需要知道在我执行 CRUD 操作后不使用 using 范围连接是否会自动关闭。

这是我使用 dbcontext 而不使用范围来获取数据并将数据保存到数据库的两个示例

var category = _dbContext.ProductCategories.Where(c => c.CompanyId == cmp).ToList();

ProductCategories productCategory = new ProductCategories

    ProductCateId = Guid.NewGuid(),
    ProductCateName = model.ProductCateName,
    CompanyId = companyId,

 ;
 _dbContext.ProductCategories.Add(productCategory);
 _dbContext.SaveChanges();

我阅读了MSdoc和一些文章,发现dbcontext对象被销毁后dbcontext会自动关闭,否则连接不会手动打开(但对EF核心中手动打开的连接不太了解)

需要澄清的是在使用依赖注入的同时创建dbContext时必须使用使用范围

【问题讨论】:

查看DbContext Lifetime, Configuration, and Initialization 感谢@Genusatplay 阅读我找到了答案。 【参考方案1】:

DbContext 的生命周期从创建实例开始,到释放实例结束。 DbContext 实例旨在用于单个工作单元

使用 Entity Framework Core (EF Core) 时的典型工作单元包括:

    创建 DbContext 实例 通过上下文跟踪实体实例。实体被跟踪 经过 从查询中返回 被添加或附加到上下文中 根据需要对跟踪的实体进行更改以实施 业务规则 调用 SaveChanges 或 SaveChangesAsync。 EF Core 检测到 所做的更改并将其写入数据库。 DbContext 实例被释放

感谢@Genusatplay,此答案可在 Microsoft 文档中找到,如需进一步阅读,您可以参考 DbContext Lifetime, Configuration, and Initialization .在这个链接下你可以找到当我们使用依赖注入和没有依赖注入时dbcontext是如何工作的

【讨论】:

以上是关于mysql dbcontext 怎么连接的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将已经打开的 MySQL 连接传递给 EF Core DbContext ?用于多线程目的

php mysql 过滤重复记录并排序

将连接字符串传递给代码优先的 DbContext

我是不是需要手动关闭 EF 核心 Dbcontext 连接

EFCore启用数据库连接池

具有多个 MySql 模式的实体框架多个 DbContext