实体框架 - 以前加载的实体的可用内存

时间:2012-12-25 09:19:26

标签: sql-server wpf entity-framework

我正在寻找一种非常快速的方法来释放(分离)部分或者一个完整的对象集,而不会丢弃其他类型的对象集实体。

在我们的场景中,我们使用了许多带有主对象上下文的对象集。 一些表将来会有非常大量的数据,我们不想在内存中完全加载。只有去年的数据将加载启动过滤器,如果用户希望他可以将过滤器更改为其他内容。过滤部分很简单,但如果过滤器只加载以前未加载的实体,则旧实体将通过objectcontext保存在内存中。在非常快的计算机上分离1-2000个实体可能需要4-5秒。这对我来说是不可接受的,特别是只需更换一次滤波器就可以并且将会超过40000。

1 个答案:

答案 0 :(得分:2)

如果您正在使用Entity Framework,那么这应该不是问题。

EF旨在拥有短期对象上下文。您为每个操作创建一个上下文,并在操作完成后将其销毁。将对象上下文保持长时间存活是一个坏主意,尽管对于桌面应用程序而言并不像使用Web应用程序那样糟糕。

通过长时间保持环境可以获得很少的收获。

EF无法从对象图中删除对象,因为它设计用于在完成操作时销毁上下文。破坏上下文是释放内存的预期方式。