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()
方法允许我们使用ModelBuilder
Fluent 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控制台应用程序。