EF通过上下文负责跟踪实体的状态,EF实体状态存在于命名空间System.DataEntity 下的EntityState枚举中。
1、 Added
Added状态针对添加操作,当标记为此状态时,表明实体被上下文所追踪但是不存在与数据库中。当调用SaveChanges时,则会插入数据库中。
- 间接标记
var employess=new Employee()
{
CreateTime = DateTime.Now,
ModifiedTime = DateTime.Now,
Name = "杨钰涵",
PhoneNumber = "189********",
DetailAddress = "中国"
};
db.Employees.Add(employess);
db.SaveChanges();
- 直接标记
db.Database.Log = Console.WriteLine;
var employess=new Employee()
{
CreateTime = DateTime.Now,
ModifiedTime = DateTime.Now,
Name = "杨钰涵",
PhoneNumber = "189********",
DetailAddress = "中国"
};
db.Entry(employess).State = EntityState.Added;
db.SaveChanges();
- Unchanged
实体被EF上下文所追踪,但是存在于数据库中的值未发生改变。若一个实体不存在于数据库,但是该实体要被上下文所追踪,同时该实体值未发生改变,则可以通过Attach进行附加追踪,然后标记为Unchanged状态。
- Modified
实体被EF上下文所追踪并存在于数据库中,同时部分或者所有属性值已被更改,当调用SaveChanges时,则更新属性到数据库中,在EF6.x中不存在Update方法。
- Delete
实体EF被上下文所追踪并存在于数据库中,当标记为Deleted状态时,SaveChanges时数据将在数据库中被删除。