2.1 DbContext

概念

DbContext类是Entity Framework Core的组成部分。 DbContext实例代表与数据库的会话,可用于查询实体实例并将其保存到数据库。 DbContext是工作单元和存储库模式的组合。
EF Core中的DbContext允许我们执行以下任务:

  • 管理数据库连接
  • 配置模型和关系
  • 查询数据库
  • 将数据保存到数据库
  • 配置变更跟踪
  • 缓存
  • 事务管理

要在我们的应用程序中使用DbContext,我们需要创建从DbContext派生的类,也称为上下文类。该上下文类通常包括模型中每个实体的DbSet 属性。以下为EF Core中DbContext类的示例。

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和OnModelCreating方法。我们必须创建SchoolContext实例以连接到数据库并保存或检索学生或课程数据。
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 返回有关实体的形状,它们之间的关系以及它们如何映射到数据库的元数据。
posted @ 2020-07-22 14:06  maanshancss  阅读(1124)  评论(0编辑  收藏  举报