在我们进行增删查改操作之前,相当重要去理解实体的生命周期,它是怎么被EF操作的。
在实体的生命周期过程中,每个实体基于上下文的操作都会有一个实体状态,实体状态是一个枚举类型的值:System.Data.Entity.EntityState,包含下面的值:
1.Added
2.Deleted
3.Modified
4.Unchanged
5.Detached
数据上下文不仅包含所有从数据库中检索的对象的引用,并且它有这个实体对象的实体状态,维护修改实体的属性,这个特性叫做更改跟踪。
实体状态从“Unchaged”到“Modified”的改变是由数据上下文自动处理的,所以其他状态的改变,必须要使用DbContext和DbSet合适的方法.
下面的图表,列出了,改变实体状态的操作,反过来是怎么影响数据库的操作的。
一个新的实体,保存的时候,生成的是Insert命令;
查询一个实体,实体的状态是Unchanged;
修改实体之后,再保存,就是Update;
删除就是Delete
时间: 2024-10-13 20:46:55