如何清除实体框架的待处理变化



我在DbContext中有一些表数据,我不想保存。我删除了数据库,再次设置它,但是待处理的更改不会远离DbContext

重建数据库后,我的数据库表是空的,但是当我将实体称为对象列表时,它仍然包含旧对象。是否有关于如何使用实体框架6清除DbContext的旧数据的建议?

您在DbContext中持有修改的对象,对吗?

如果是这样,那么问题在于您在随后的操作中重复使用相同的DbContext对象。您应该在当前操作结束后立即处置DbContext,然后为新操作创建新的操作。

通常,您所有的操作都应具有此表格:

using (DbContext context = new DbContext()) // Use concrete context type
{
    // Do stuff with context
    context.SaveChanges();
} // At this point your context seizes to exist

如果有什么问题,例如有例外或决定不致电SaveChanges,则当前在上下文中进行的所有中间更改也将被销毁。

您必须处置dbcontext

using (var ctx = new MyDbContext())
{
    // Do your thing...
    // Call ctx.SaveChanges();
}
using (var ctx = new MyDbContext())
{
    // Do your thing...
    // You should not find the data anymore
}

最新更新