繁体   English   中英

如何清除实体框架中的未决更改

[英]How to Clear Pending Changes in Entity Framework

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

重建数据库后,我的数据库表为空,但是当我将该实体作为对象列表调用时,它仍然包含旧对象。 关于如何使用Entity Framework 6从DbContext清除旧的暂挂数据有什么建议吗?

您正在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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM