2011-03-22 37 views
2

我有一个小型数据库,它会保持很小。它是一个asp.net 4.0网站。 它在表格数量和条目数量方面都很小。 也是用于内部管理,所以很少用户会使用它。EntityFramework - 是否有可能将整个上下文数据库加载到内存?

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

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

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

感谢, Itye

回答

0

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

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

0

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

1

不,没有命令可以将所有内容加载到内存中。您可以从一些实体入手,并使用Include方法来定义加载实体,但您无法在没有关系的情况下加载实体。

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

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

相关问题