Asp.net mvc 3 如何在EF 4.1中缓存结果/数据集?

Asp.net mvc 3 如何在EF 4.1中缓存结果/数据集?,asp.net-mvc-3,entity-framework-4.1,Asp.net Mvc 3,Entity Framework 4.1,我在MVC3应用程序中有一个视图,它调用一个存储过程(需要一段时间才能执行)来填充视图上的网格,并希望以某种方式缓存该数据?不熟悉EF缓存,但我实际上想在启动时在后台的后台线程上运行查询,这样当用户单击此特定视图(这是用户希望看到的常见数据视图)时,结果会很快并缓存在webgrid中显示 如有任何信息,将不胜感激。谢谢 使用存储库模式请求数据实体。在存储库类中,将结果缓存在MemoryCache(.net中的一种特定类型的缓存)中。然后,无论何时请求对象,存储库类都知道是否从te缓存中获取该对象

我在MVC3应用程序中有一个视图,它调用一个存储过程(需要一段时间才能执行)来填充视图上的网格,并希望以某种方式缓存该数据?不熟悉EF缓存,但我实际上想在启动时在后台的后台线程上运行查询,这样当用户单击此特定视图(这是用户希望看到的常见数据视图)时,结果会很快并缓存在webgrid中显示


如有任何信息,将不胜感激。谢谢

使用存储库模式请求数据实体。在存储库类中,将结果缓存在MemoryCache(.net中的一种特定类型的缓存)中。然后,无论何时请求对象,存储库类都知道是否从te缓存中获取该对象,而调用方不需要知道有关缓存的任何信息。我会使用code first或poco模板来避免从其他依赖项存储任何行李

对于POCO,您可以使用EF POCO模板,也可以使用代码优先模型来为您提供不带EF包的POCO类。 让我知道,如果你有任何具体的q的这些步骤,我可以进入更详细的。 如果您需要在应用程序启动时花一段时间加载此代码,那么另一个线程肯定是这样做的,因为主线程中任何长时间运行的应用程序启动代码都可能导致死锁。每个用户更基本的方法是将对象放在用户会话中,但这确实取决于您。 如果存在于ObjectContext生存期之外的EF框架,则不存在EF缓存。 另一种方法是在控制器方法中处理此问题,如下所示: