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

当我们执行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中的方法来完成

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

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

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

原文地址:https://www.cnblogs.com/lanpingwang/p/6597391.html