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

5

我有一个小型数据库,它将保持小型。这是一个asp.net 4.0网站。 从表的数量和其中的条目数量来看,它很小。 此外,它是用于内部管理的,因此很少有用户会使用它。

是否有一种方法可以在一次调用中加载所有内容?也就是说,不是调用context.Orders.ToList(),context.Customers.ToList()等。

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

我知道这是一个奇怪的要求,但我认为在我的情况下,以返回数据的方式更加高效。

谢谢, Itye

3个回答

2

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

此外,整个方法都有些可疑。为什么你想这样做?你提到了ASP.NET标记,所以似乎你想在客户端之间共享加载的数据?如果您的应用程序不是只读的,那将是非常糟糕的想法。在所有并发请求中共享一个上下文就像共享“事务”一样。

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


1
据我所知,没有这样的功能。您必须手动在每个实体集上调用ToList()或ToArray()。
沿着这条路走似乎不是一个好主意。如果您的数据库很小,那么一切都会很快,所以我建议按照预期使用Entity Framework。如果您真的想一次性加载所有数据,也许应该使用文件而不是数据库?

0

您需要明确地加载它;我没有听说过一种将整个上下文加载到内存中的过程,因为在大多数情况下这是行不通的。要加载所有实体引用/集合,也需要调用Include。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接