public void Delete()
{
testDbContext.Order.Remove(testDbContext.Order.Find(1006));
testDbContext.SaveChanges();
}
这种方式会执行两次sql语句,第一次是将实体查询出来,第二次是执行删除语句
通过上下文查询出来的实体都会被标记一个状态Unchanged,再执行Remove方法时会标记状态为deleted,调用savechenges方法则会执行删除的sql语句。
public void Delete1()
{
var order = new Order { OrderId = 1007 };
testDbContext.Entry(order).State = EntityState.Deleted;
testDbContext.SaveChanges();
}
public void Delete2()
{
var order = new Order { OrderId = 1007 };
testDbContext.Order.Remove(order);
testDbContext.SaveChanges();
}
上面两种方式都会执行一条sql语句,在new 实体类中,主键属性被定义就行了。
关系表删除
仅当使用 EF Core 删除主体且将依赖实体加载到内存中