Asp.net mvc 3 使用存储过程(MSSQL)时的Dapper缓存解决方案

Asp.net mvc 3 使用存储过程(MSSQL)时的Dapper缓存解决方案,asp.net-mvc-3,sql-server-2008,c#-4.0,dapper,Asp.net Mvc 3,Sql Server 2008,C# 4.0,Dapper,我使用的Dapper主要用于调用数据库MSSQL 2008 R2中的存储过程。我没有映射到数据库表的类。大多数数据以IEnumerable结尾,并传输到屏幕上的网格中 是否有我可以使用的现成的数据缓冲解决方案?(我需要在MVC上使用它) 数据库中的数据本质上是静态和动态的。我使用存储库模型来访问数据。Dapper不包括任何内置的数据缓存功能(尽管它在元编程层内部使用了大量缓存):它直接针对ADO.NET的东西-但是,您可以使用几乎任何现成的缓存组件,包括HTTP运行时缓存(HttpContext

我使用的Dapper主要用于调用数据库MSSQL 2008 R2中的存储过程。我没有映射到数据库表的类。大多数数据以
IEnumerable
结尾,并传输到屏幕上的网格中

是否有我可以使用的现成的数据缓冲解决方案?(我需要在MVC上使用它)


数据库中的数据本质上是静态和动态的。我使用存储库模型来访问数据。

Dapper不包括任何内置的数据缓存功能(尽管它在元编程层内部使用了大量缓存):它直接针对ADO.NET的东西-但是,您可以使用几乎任何现成的缓存组件,包括HTTP运行时缓存(
HttpContext.Current.cache
),或更新的
ObjectCache
等实现。因为这些只需要对象,所以应该可以正常工作


如果您使用的是分布式缓存(可能通过app fabric、redis或memcached),那么您需要数据可序列化。在这种情况下,我强烈建议使用正式的POCO类型进行绑定,而不是使用
dynamic
API。例如,在内部,我们使用dapper填充POCO,这些POCO使用protobuf网络标记进行注释以进行序列化,并通过BookSleeve存储到redis。这听起来比实际情况更复杂。

我已经想了一些想法,但是如果我没有抓住你问题的重点,请告诉我。我想的更多的是我的代码和数据库之间的机制。我在做一个查询,它检查数据库中的新数据,如果是,它直接从数据库或缓存返回。正如ELMAH所说,它在某种程度上独立于我的代码。Elmah捕获我的异常并记录它们。缓存应该透明地将我的查询捕获到数据库中。我想我需要圣诞老人?@Tomasito“检查数据库中的新数据”很棘手:活动缓存总是很棘手。为此,在SE,我们使用dapper和booksleeve(redis)的组合—redis提供了一致的缓存和发布/订阅,因此我们可以使用多层缓存:我们可以将其存储在本地机器的内存中,并使用发布/订阅使其失效。因此,进行更改变为“存储到数据库,并发出一个“pub”,以便所有计算机将其从本地内存中删除”。把这些放在一起并不需要太多——在我看来,最好有20行自己的实用程序代码,让您可以工作with@Tomasito无论您选择哪种工具,您都可以使用一些包罗万象的库/框架,强制您使用特定的工具。