【发布时间】:2012-03-07 19:35:31
【问题描述】:
我想要的在概念上非常简单,但我不知道如何最好地实现这样的东西。
在我的 Web 应用程序中,我有访问存储库的服务,这些服务访问与 SQL Server 数据库交互的 EF。所有这些都在每个 Web 请求中实例化一次。
我希望在存储库和 EF(或服务和存储库?)之间有一个额外的层,它静态地跟踪从数据库中提取和推送到数据库的对象。
目标,假设 DB 访问仅通过应用程序完成,我们知道一个事实,即除非某些存储库访问 EF 并提交更改,否则对象集并没有真正改变。
一个例子是:
存储库调用方法GetAllCarrots();
GetAllCarrots() 在 SQL Server 上执行查询以检索 List<Carrot>,如果两者之间没有发生任何其他事情,我想防止每次在 SQL Server 上实际执行此查询(不管它是在不同的Web 请求,我希望能够处理这种情况)
现在,如果对BuyCarrot() 的调用将Carrot 添加到表中,那么我希望它使Carrots 的静态缓存无效,这将使GetAllCarrots(); 需要再次查询数据库.
关于数据库缓存有哪些好的资源?
【问题讨论】:
标签: c# sql entity-framework caching