站点图标 江湖人士

认识Entity Framework Core的DbContext类

认识Entity Framework Core的DbContext类

Entity Framework Core的DbContext类是EF Core的一个组成部分。认识Entity Framework Core的DbContext类,DbContext称之为上下文,表示与数据库的会话的实例,可用于查询实体的实例并将其保存到数据库。 DbContext是工作单元和存储库模式的组合。

认识Entity Framework Core的DbContext类

DbContext 在EF Core中,我们可以执行以下任务:

  1. 管理数据库连接
  2. 配置模型和关系
  3. 查询数据库
  4. 将数据保存到数据库
  5. 配置更改跟踪
  6. 高速缓存
  7. 事务管理

要在应用程序中使用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> 属性StudentCourse类型。它还会覆盖OnConfiguringOnModelCreating方法。我们必须创建一个SchoolContext连接数据库并保存或检索StudentCourse数据的实例。

认识Entity Framework Core的DbContext类

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命令。
SaveChangesAsyncSaveChanges()的异步方法
Set 创建一个DbSet<TEntity>可用于查询和保存TEntity实例的文件。
Update 将已断开连接的实体附加到已修改状态并开始跟踪它。调用SaveChagnes()时将保存数据。
UpdateRange使用修改状态附加断开连接的实体集合并开始跟踪它。调用SaveChagnes()时将保存数据。
OnConfiguring重写此方法以配置要用于此上下文的数据库(和其他选项)。为创建的上下文的每个实例调用此方法。
OnModelCreating重写此方法以进一步配置通过约定从DbSet<TEntity>派生上下文的属性中公开的实体类型发现的模型。

DbContext 的属性

方法用途
ChangeTracker提供对此上下文正在跟踪的实体实例的信息和操作的访问。
Database提供对此上下文的数据库相关信息和操作的访问。
Model返回实体元数据,以及实体之间关系以如何映射到数据库的。

在下一篇文章中学习如何创建第一个简单的EF Core控制台应用程序。

退出移动版