EntityFramework - 是否可以将整个Context数据库加载到内存?

时间:2011-03-22 15:42:37

标签: c# asp.net entity-framework

我有一个小型数据库,它仍然很小。这是一个asp.net 4.0网站。 它在表的数量和条目数方面都很小。 它也适用于内部管理,因此很少有用户会使用它。

有没有办法在一次通话中加载所有内容?比是,而不是调用context.Orders.ToList(),context.Customers.ToList()等。

此外,如果存在这样的选项,它是否也会加载所有实体引用?

我知道这是一个奇怪的要求,但我认为在我的方案中,在返回数据方面会更有效率。

谢谢, Itye

3 个答案:

答案 0 :(得分:1)

没有没有命令可以简单地将所有内容加载到内存中。您可以从某个实体开始,使用Include方法定义预先加载,但是您无法在没有关系的情况下加载实体。

此外整个方法闻起来。你为什么要这样做?您提到了ASP.NET标记,因此您似乎想要在客户端之间共享加载的数据?如果您的申请不是只读的,那将是very bad idea。所有并发请求中的一个上下文与共享“事务”相同。

ObjectContext应该只为单个工作单元服务。在大多数情况下,这意味着Web应用程序中的单个HTTP请求。

答案 1 :(得分:0)

据我所知,不存在此类功能。您必须手动调用每个实体集上的ToList()或ToArray()。

走这条路对我来说似乎不是一个好主意。如果你的数据库很小,那么一切都会很快,所以我建议你按照预期使用实体框架。如果你真的想一次加载所有数据,也许你应该使用文件而不是数据库?

答案 2 :(得分:0)

您必须明确加载它;我没有听说过将整个上下文加载到内存中的过程,因为在大多数场景中都不起作用。要加载所有实体引用/集合,还需要调用Include。