如何清除实体框架中的待定更改

时间:2016-12-10 22:53:52

标签: c# sql entity-framework

我在DbContext中有一些我不想保存的表格数据。我已经删除了数据库,再次设置它,但挂起的更改不会离开DbContext

重建数据库后,我的数据库表为空,但是当我将实体作为对象列表调用时,它仍然包含旧对象。有没有关于如何使用Entity Framework 6清除DbContext中的旧待处理数据的建议?

2 个答案:

答案 0 :(得分:3)

您在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,目前在上下文中保留的所有中间变更也将被销毁。

答案 1 :(得分:2)

你必须处理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
}