zoukankan      html  css  js  c++  java
  • 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 返回有关实体的形状,它们之间的关系以及它们如何映射到数据库的元数据。
  • 相关阅读:
    inline关键字的作用
    Qt编写websocketpp客户端
    QThreadPool线程池的开发使用
    QThreadPool线程池的使用,线程与Widget通过信号与槽的方式通信。
    1、QThreadPool线程池的使用,线程和Widget通过QMetaObject::invokeMethod交互。
    QtTest模块出现控制台的原因与方案
    定长字符数组与不定长字符数组的初始化
    C#开发中localhost与127.0.0.1本地服务器的区别
    C#树目录(treeView)的编写
    SQLite的导入导出
  • 原文地址:https://www.cnblogs.com/maanshancss/p/13360345.html
Copyright © 2011-2022 走看看