- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EF_Code_First:二级缓存
EF Code First:二级缓存(1)
缓存对于一个系统来说至关重要,但是是 EF 到版本 6 了仍然没有见到有支持查询结果缓存
机制的迹象。EF4 开始会把查询语句编译成存储过程缓存在 Sql Server 中,据说 EF6中对
此做了改进,会把 Linq To Entities 的查询条件直接编译缓存在 EF 中。但是这些都是只
是对查询条件做了缓存,而不是缓存查询的结果集(DbSet.Find(object key)那个虽然走
了 DbSet.Local 数据集,但也仅支持通过主键查找单个实体的情况,很有局限性),没有
达到我们想要的效果。
一、前言
今天我们来谈谈EF的缓存问题。
缓存对于一个系统来说至关重要,但是是EF到版本6了仍然没有见到有支持查询结果缓存机制的迹象。
EF4开始会把查询语句编译成存储过程缓存在Sql Server 中,据说EF6 中对此做了改进,会把Linq To
Entities 的查询条件直接编译缓存在EF中。但是这些都是只是对查询条件做了缓存,而不是缓存查询的
结果集(DbSet.Find(object key)那个虽然走了DbSet.Local数据集,但也仅支持通过主键查找单个实体
的情况,很有局限性),没有达到我们想要的效果。
EF不加缓存功能,可能也有另外的考虑吧,这里不去猜测。虽然EF团队没有在EF中加入缓存功能,但
已经给出的缓存功能的扩展,这就是Community Entity Framework Provider Wrappers,这个扩展的工
作原理由下图可以清晰的了解:
该扩展提供了跟踪SQL运行日志与SQJ结果集缓存的功能,这里,我们只用到它的缓存功能来为EF建立
二级缓存的支持。
二、缓存设计
(一) 引用 EFProviderWrappers
如下图,在NuGet中只提供了 Entity Framework Provider Wrapper Toolkit(基础类库)与 Entity
Framework Tracing Provider(日志跟踪)的下载,很遗憾的并没有提供 Entity Framework Caching
Provider(缓存)。
我们只能自己动手来引用了,这里提供几种思路:
到 /EFProviderWrappers 下载代码,自行编译,然后在项目
GMF.Component.Data项目中手动引用EFProviderWrapperToolkit.dll与
EFCachingProvider.dll文件。
EFProviderWrapperToolkit由NuGet下载,EFCachingProvider手动引用。
我是觉得两种思路都挺麻烦的,这个扩展的代码貌似已经不更新了(3/18/2011),而且在
GMF.Component.Data中额外的引用两个程序集也是个麻烦事,于是我用下面的方法来引用:
在GMF.Component.Data项目中新建两个文件夹,把以上源代码中的两个工程以文件夹的形式包含
到项目中。
这样,似乎更干净利落,如图:
(二) 缓存代码分析及整合
1. 关键代码简介
在EFCachingProvider中,我们要用到的核心类有三个:
ICache:缓存缓存基类,系统中实现了一个内存缓存类(InMemoryCache),适用于单台服务器
的缓存实现,如果要实现分布式缓存,可以从这个基类进行扩展。
o InMemoryCache:内存缓存实现类,内部使用了一个Dictionarystring, CacheEntry
作为缓存容器,以查询的SQL语句及参数的连接字符串(或其MD5值)为键
(EFCachingCommands.cs类中定义)。还包含了缓存命中、缓存项数量等数据的统计
及缓存清理功能。
CachingPolicy:缓存策略基类,定
您可能关注的文档
- CAD如何导出高清JPG图片.ppt
- CC1101低功耗双向收发无线模块.pdf
- CFI-Social Media Watch-65【当Social与商务结合,就连超市都变得可爱】.pdf
- ch06-04-课程项目.ppt
- ch1 操作系统综述.pdf
- ch10 高级文件处理.pdf
- ch4 关系代数与QBE.pdf
- ch4-4.3分页式存储管理.ppt
- CH5-Linux文件系统2.pdf
- ch7 文件和文件系统结构.pdf
- 基础护理学知到智慧树期末考试答案题库2025年安徽中医药大学.docx
- 基础护理学知到智慧树期末考试答案题库2025年昌吉职业技术学院.docx
- 基础护理学知到智慧树期末考试答案题库2025年德州学院.docx
- 基础护理学知到智慧树期末考试答案题库2025年滨州医学院.docx
- 基础护理学1(徐州医科大学)知到智慧树期末考试答案题库2025年徐州医科大学.docx
- 基础护理学知到智慧树期末考试答案题库2025年湖北中医药大学.docx
- 高校校园流浪动物管理策略探究.docx
- 基础护理学知到智慧树期末考试答案题库2025年齐鲁医药学院.docx
- 基础护理学知到智慧树期末考试答案题库2025年青岛黄海学院.docx
- 城市健康生态社区评价体系的整合与优化.docx
文档评论(0)