Entity Framework Core DbContext EF Core 数据库上下文

DbContext 是用来跟数据库进行会话的一个类。它提供了下面的一些跟数据库进行通信的API.

  • 管理数据库连接
  • 配置模型,进行模型映射
  • 对数据库进行数据查询
  • 保存数据到数据库
  • 更改跟踪
  • 对象缓存 (同一个DbContext已经查询出来的对象,再次查询不会去数据库查询)
  • 事务管理

正如上一篇看到的哪样,我们需要创建一个自己的MalemaDbContext继承于DbContext 然后里面有一些DbSet<Tentity>的属性。这个刚好就对应到我们数据库当中的表。 数据库的表跟这边的DbSet是一一对应的。


public DbSet<Student> Students { get; set; }

EF core OnConfiguring

在这个方法里面,我们可以给它配置要使用哪一种类型的数据库。和数据库连接字符串

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    var connectionString = "Data Source=127.0.0.1;Initial Catalog=MalemaEFCoreExample;Persist Security Info=True;User Id=sa;Password=malema987%^&";
    optionsBuilder.UseSqlServer(connectionString);
}

在实际使用的时候,我们不会在这边设置,而是设在Di里面进行设置

EF core OnModelCreating

同样的我们也可以对DbContext OnModelCreating 方法进行重写. 在这边我们可以使用Fluent API对数据库模型进行配置。

比如如下的代码我们把Student name的长度设置成50

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>().Property(x => x.Name).HasMaxLength(50);
    base.OnModelCreating(modelBuilder);
}

EF core DbContext 的方法

方法 说明
Add 向 DbContext 添加一个具有已添加状态的新实体并开始跟踪它。 当 SaveChanges() 或 SaveChangesAsync() 被调用时,这个新的实体数据将被插入到数据库中。 不能设置主键,否则会报错
AddAsync Add 方法的 Async版。
AddRange 向 DbContext 添加一组具有已添加状态的新实体并开始跟踪它。 当 SaveChanges() 或 SaveChangesAsync() 被调用时,这个新的实体数据将被插入到数据库中。
AddRangeAsync AddRange的 Async版
Attach 将一个新的或现有的实体附加到DbContext 并开始跟踪它。 初始状态为 Unchanged。 可以用来做部分更新
AttachRange 跟上面一样只是一组
Entry 得到 EntityEntry 的信息。主要就是跟踪的一些状态信息
Find 使用主键查询.
FindAsync Find的 Async版
Remove 把当前的对象标记为删除状态,当调用 SaveChanges() 的时候这个对象记录)会被从数据库当中删除掉
RemoveRange 把一组对象标记为删除状态,当调用 SaveChanges() 的时候这些对象(记录)会被从数据库当中删除掉
SaveChanges 跟据跟踪实体的状态 生成相对应的Sql语句,来添加,更新,删除相对应的记录
SaveChangesAsync SaveChanges 方法的 Async版。
Set 生成一个DbSet. 我们可以用这个DbSet来进行操作。
Update 开始跟踪这个实体,有主键ID,在调用SaveChanges() 会更新所有的字段,没有则会添加。主键数据库不存在会出错
UpdateRange 跟上面的方法类似,只不过是跟踪一堆实体。
OnConfiguring 配置数据库类型,和数据库连接字符串 ,日志等
OnModelCreating 使用Fluent Api 对数据库模型进行配置

DbContext 的属性 Properties

方法
ChangeTracker 提供DbContext正在跟踪的实体实例的信息和操作的访问。
Database 提供数据库相关信息和操作的访问。
Model 返回有关实体形状、它们之间的关系以及它们如何映射到数据库的元数据。
最近更新的
...