DbContext概念解释
-
DbContext是EF中的一个类(数据库(db=database)上下文类),可以当做是一个数据库对象的实例, DbContext实例代表与数据库的会话,可用于查询实体实例并将其保存到数据库。
-
在EF中,可以通过DbContext对数据库进行增删改查等操作(属于EF里面的用法),后面加.表名可以得到表的数据。
-
Context翻译:上下文。我们可以将上下文看作相关“事物”的包装,例如 HttpContext(包含任何HTTP相关操作的信息), DbContext(包含用于数据库通信的方法和属性官方文档)。Context可以简单理解为特定一个类或多个类的封装。
-
DbSet表示可用于增删改查操作的实体集。
DbContext作用
DbContext是实体类和数据库之间的桥梁,DbContext主要负责与数据交互,主要作用是:
-
DbContext包含所有的实体映射到数据库表的实体集(DbSet < TEntity >)。
-
DbContext 将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库。
-
更改跟踪: 它跟踪每个实体从数据库中查询出来后发生的修改变化。
-
持久化数据: 它也基于实体状态执行插入、更新和删除操作到数据库中。
DbContext使用
(包括下面的方法也要看)
创建数据库,我们需要:
- 定义应用的DbContext,这个可以通过创建一个类并让它继承自EF Core 的DbContext来实现。
- 每次要访问数据库时,都要创建该类的实例。
DbContext方法
只记录目前用到过的。
Method | Usage |
---|---|
Add | 将一个新实体添加到具有添加状态的DbContext中,并开始对其进行跟踪。调用SaveChanges()时,会将新的实体数据插入数据库。 |
AddAsync | 用于向状态为“已添加”的DbContext添加新实体并开始对其进行跟踪的异步方法。调用SaveChangesAsync()时,会将新的实体数据插入数据库。 |
Set | Set创建一个DbSet ,可用于查询和保存TEntity的实例 |
SavaChange | 对已添加/修改/删除状态的实体的数据库执行INSERT/UPDATE/DELETE命令 |
SaveChangesAsync | SaveChanges()的异步方法 |
DbContext的使用
详情见官方文档:https://docs.microsoft.com/zh-cn/ef/ef6/fundamentals/working-with-dbcontext