当我们执行CRUD(Create,Read,Update,Delete)操作之前,最重要的是搞明白实体的生命周期和EntityFrameword怎么管理实体

在一个实体的生命周期里,每个实体都有一个实体状态(基于上下文DbContext执行的操作),实体状态是一个枚举类型System.Data.Entity.EntityState

包含以下值:

1.Added

2.Deleted

3.Modified

4.Unchanged

5.Detached

这个上下文Context不仅拥有从数据库中查询出来的实体引用,而且拥有实体的状态和维护实体属性的变化修改,这个特征就是变化跟踪(Change Tracking

实体状态从Unchanged 状态变到Modified状态是由上下文context自动处理的,其他所有的改变必须明确地调用DbContext和DbSet中的方法来完成

下面的图标说明实体上的哪些操作改变实体的状态,反过来影响数据库的操作

EntityFramework 学习 一 Entity Lifecycle 实体生命周期

由上图所示,context中新的实体有Added实体状态,因此上下文将执行插入数据库命令,同样的,当你通过L2E查询一个存在的实体,它将是Unchanged实体状态,这是因为你刚刚查询实体且没有在该实体上执行任何操作。当你更改已存在实体的值时,它的状态变为Modified实体状态,在SaveChanges时,将执行更新操作。从contxt上下文删除实体,它变为Deleted状态,将执行删除操作。

 

因此,实体上的操作将改变实体的状态,Context通过实体的状态创建和执行数据库命令。

 

相关文章:

  • 2022-12-23
  • 2022-01-24
  • 2021-04-19
  • 2021-08-04
  • 2021-08-23
  • 2021-04-30
  • 2021-05-28
  • 2021-05-23
猜你喜欢
  • 2022-02-26
  • 2021-05-27
  • 2021-12-04
  • 2022-12-23
  • 2021-05-22
  • 2022-12-23
  • 2021-07-04
相关资源
相似解决方案