概念
DbContext类是Entity Framework Core的组成部分。 DbContext实例代表与数据库的会话,可用于查询实体实例并将其保存到数据库。 DbContext是工作单元和存储库模式的组合。
EF Core中的DbContext允许我们执行以下任务:
- 管理数据库连接
- 配置模型和关系
- 查询数据库
- 将数据保存到数据库
- 配置变更跟踪
- 缓存
- 事务管理
要在我们的应用程序中使用DbContext,我们需要创建从DbContext派生的类,也称为上下文类。该上下文类通常包括模型中每个实体的DbSet
Copypublic class SchoolContext : DbContext
{
public SchoolContext()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
//实体
public DbSet<Student> Students { get; set; }
public DbSet<Course> Courses { get; set; }
}
在上面的示例中,SchoolContext类派生自DbContext类,并且包含Student和Course类型的DbSet
OnConfiguring()方法允许我们使用DbContextOptionsBuilder选择和配置要与上下文一起使用的数据源。在此处了解如何配置DbContext类。
OnModelCreating()方法允许我们使用ModelBuilder Fluent API配置模型。
DbContext方法
Method | Usage |
---|---|
Add | 将一个新实体添加到具有添加状态的DbContext中,并开始对其进行跟踪。调用SaveChanges()时,会将新的实体数据插入数据库。 |
AddAsync | 用于向状态为“已添加”的DbContext添加新实体并开始对其进行跟踪的异步方法。调用SaveChangesAsync()时,会将新的实体数据插入数据库。 |
AddRange | 将具有添加状态的新实体集合添加到DbContext并开始对其进行跟踪。调用SaveChanges()时,会将新的实体数据插入数据库。 |
AddRangeAsync | 用于添加将保存在SaveChangesAsync()上的新实体集合的异步方法。 |
Attach | 将新的或现有的实体附加到状态不变的DbContext并开始跟踪它。 |
AttachRange | AttachRange将新实体或现有实体的集合以未更改的状态附加到DbContext并开始对其进行跟踪。 |
Entry | 获取给定实体的EntityEntry。该条目提供对实体的更改跟踪信息和操作的访问。 |
Find | 查找具有给定主键值的实体。 |
FindAsync | 用于查找具有给定主键值的实体的异步方法。 |
Remove | 移除将删除状态设置为指定的实体,当调用SaveChanges()时,该实体将删除数据。 |
RemoveRange | 将Deleted状态设置为一组实体,这些实体将在调用SaveChanges()时在一次数据库往返中删除数据。 |
SaveChanges | 对状态为“已添加”,“已修改”或“已删除”的实体执行INSERT,UPDATE或DELETE命令到数据库。 |
SaveChangesAsync | SaveChanges()的异步方法 |
Set | Set创建一个DbSet ,可用于查询和保存TEntity的实例。 |
Update | 附加状态为“已修改”的断开连接的实体,并开始对其进行跟踪。调用SaveChagnes()时将保存数据。 |
UpdateRange | 附加状态为“已修改”的断开连接的实体的集合,并开始对其进行跟踪。调用SaveChagnes()时将保存数据。 |
OnConfiguring | 重写此方法,以配置要用于此上下文的数据库(和其他选项)。创建的上下文的每个实例都会调用此方法。 |
OnModelCreating | 重写此方法,以进一步配置根据约定从派生上下文的DbSet 属性中公开的实体类型发现的模型。 |
DbContext属性
Model | Usage |
---|---|
ChangeTracker | 提供对该上下文正在跟踪的实体实例的信息和操作的访问。 |
Database | 提供对此上下文的数据库相关信息和操作的访问。 |
Model | 返回有关实体的形状,它们之间的关系以及它们如何映射到数据库的元数据。 |