Entity Framework Core的DbContext类是EF Core的一个组成部分。认识Entity Framework Core的DbContext类,DbContext称之为上下文,表示与数据库的会话的实例,可用于查询实体的实例并将其保存到数据库。 DbContext是工作单元和存储库模式的组合。
认识Entity Framework Core的DbContext类
DbContext 在EF Core中,我们可以执行以下任务:
- 管理数据库连接
- 配置模型和关系
- 查询数据库
- 将数据保存到数据库
- 配置更改跟踪
- 高速缓存
- 事务管理
要在应用程序中使用DbContext,我们需要创建派生自的类DbContext,也称为上下文类。此上下文类通常包含 模型中每个实体的DbSet <TEntity>属性。请考虑以下EF Core中的上下文类示例。
public class SchoolContext : DbContext
{
public SchoolContext()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
//entities
public DbSet<Student> Students { get; set; }
public DbSet<Course> Courses { get; set; }
}
在上面的示例中,SchoolContext类派生自DbContext类,并包含DbSet<TEntity> 属性Student和Course类型。它还会覆盖OnConfiguring和OnModelCreating方法。我们必须创建一个SchoolContext连接数据库并保存或检索Student或Course数据的实例。
该OnConfiguring()方法允许我们选择和配置要与上下文一起使用的数据源DbContextOptionsBuilder。在这里学习如何配置DbContext类。
该OnModelCreating()方法允许我们使用ModelBuilderFluent API 配置模型。
DbContext 的方法
| 方法 | 用途 |
|---|---|
| Add | 同步写入数据库方法,将新实体添加到已DbContext添加状态并开始跟踪它。调用SaveChanges()时,此新实体数据将插入到数据库中。 |
| AddAsync | 异步写入数据库方法,将新实体DbContext添加到已添加状态并开始跟踪它的异步方法。调用SaveChangesAsync()时,将将新的实体数据插入到数据库中。 |
| AddRange | 批量插入数据库方法,将一组新实体DbContext添加到已添加状态并开始跟踪它。调用SaveChanges()时,此新实体数据将插入到数据库中。 |
| AddRangeAsync | 批量异步写入数据库方法,调用SaveChangesAsync()异步方法执行保存。 |
| Attach | 将新实体或现有实体附加到DbContext上下文,并设置对象为Unchanged状态并开始跟踪它。 |
| AttachRange | 将新实体或现有实体的集合附加到DbContext上下文,并设置这些批量对象为Unchanged状态并开始跟踪它们。 |
| Entry | 获取给定实体的EntityEntry。 该条目提供对实体的更改跟踪信息和操作的访问。 |
| Find | 查找具有给定主键值的实体。 |
| FindAsync | 用于查找具有给定主键值的实体的异步方法。 |
| Remove | 将Deleted状态设置为指定的实体,该实体将在调用SaveChanges()时删除数据。 |
| RemoveRange | 将Deleted状态设置为一组实体,这些实体将在调用SaveChanges()时删除单个DB往返中的数据。 |
| SaveChanges | 对当前上下文存在的对象进行持久化(将数据保存到数据库),对具有已添加,已修改或已删除状态的实体的数据库执行INSERT,UPDATE或DELETE命令。 |
| SaveChangesAsync | SaveChanges()的异步方法 |
| Set | 创建一个DbSet<TEntity>可用于查询和保存TEntity实例的文件。 |
| Update | 将已断开连接的实体附加到已修改状态并开始跟踪它。调用SaveChagnes()时将保存数据。 |
| UpdateRange | 使用修改状态附加断开连接的实体集合并开始跟踪它。调用SaveChagnes()时将保存数据。 |
| OnConfiguring | 重写此方法以配置要用于此上下文的数据库(和其他选项)。为创建的上下文的每个实例调用此方法。 |
| OnModelCreating | 重写此方法以进一步配置通过约定从DbSet<TEntity>派生上下文的属性中公开的实体类型发现的模型。 |
DbContext 的属性
| 方法 | 用途 |
|---|---|
| ChangeTracker | 提供对此上下文正在跟踪的实体实例的信息和操作的访问。 |
| Database | 提供对此上下文的数据库相关信息和操作的访问。 |
| Model | 返回实体元数据,以及实体之间关系以如何映射到数据库的。 |
在下一篇文章中学习如何创建第一个简单的EF Core控制台应用程序。

