2010-09-29 58 views
4

如果我运行了多个查询并且ObjectContext被实体填充了,如果我不再需要这些实体,我该如何清除上下文。我知道我需要尽快处理上下文,但在这种情况下是不可能的。那么有什么方法可以从上下文中删除这些对象吗?如何清除对象上下文

+0

可能的重复:http://stackoverflow.com/questions/3774395/how-to-clear-contents-of-objectcontext-in-entity-framework-1-0 – Yakimych 2010-09-30 09:31:12

回答

1

您可以尝试在Detach上下文中的每个实体。

+0

起初我想过,但我是希望有更好的方法。我想没有。 – Max 2010-10-01 14:32:20

11

没有“清除”ObjectContext的方法。唯一的方法是配置ObjectContext的当前实例并启动新实例。

0

您可以尝试分离上下文中的每个实体。

Max是正确的,但是当你想做任何需要很长时间的事情时,上下文会存储很多对象,并不断在内存中成长,并使你的应用程序变慢。

这是由泄漏存储器调用。

我现在有EntityFramework 6这个问题,但我不知道如何“确切地”修复它。

总是我需要做一个查询,我起床的上下文,并做到这一点,但这个行动是不同的,我有很多东西要计算,在一个循环中,我保持上下文直到完成。现在我正在处理清单后的清单,但我的系统中仍然存在泄漏内存,并且上下文肯定存在此问题。任何建议“团队”?我不知道实体框架的作品。

+0

这似乎并不是问题的答案,它没有解决问题。最好把它写成注释 – abarisone 2015-03-18 13:22:42

+0

我试过了,相信我,但是我的声望很低。对不起! – 2015-03-23 11:33:32

+1

如果你发现你的Context正在增长并且随着你加载更多的实体而增长...并且你不需要保存这些实体的任何改变(也许你只是加载它们来读取值或在其他计算中使用它们,但是您不需要对它们进行更改以便将其保存回数据库),那么您可以在查询中使用AsNoTracking()方法来告知EF不会跟踪它们,并且会节省大量内存。看到这里:https://msdn.microsoft.com/en-us/data/jj556203.aspx – MattSlay 2015-06-13 04:10:53