EF 二级缓存 EFSecondLevelCache

发布时间:2017-4-27 5:46:13 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"EF 二级缓存 EFSecondLevelCache ",主要涉及到EF 二级缓存 EFSecondLevelCache 方面的内容,对于EF 二级缓存 EFSecondLevelCache 感兴趣的同学可以参考一下。

使用方法:1- 设置缓存失效通过重写SaveChanges方法防止过期写道namespace EFSecondLevelCache.TestDataLayer.DataLayer{    public class SampleContext : DbContext    {        // public DbSet<Product> Products { get; set; }        public SampleContext()            : base("connectionString1")        {        }
      //重写 SaveChanges
public override int SaveChanges() { return SaveAllChanges(invalidateCacheDependencies: true); } public int SaveAllChanges(bool invalidateCacheDependencies = true) { var changedEntityNames = getChangedEntityNames(); var result = base.SaveChanges(); if (invalidateCacheDependencies) { new EFCacheServiceProvider().InvalidateCacheDependencies(changedEntityNames); } return result; }
//修改、删除、添加数据时缓存失效
private string[] getChangedEntityNames() { return this.ChangeTracker.Entries() .Where(x => x.State == EntityState.Added || x.State == EntityState.Modified || x.State == EntityState.Deleted) .Select(x => System.Data.Entity.Core.Objects.ObjectContext.GetObjectType(x.Entity.GetType()).FullName) .Distinct() .ToArray(); } }}有时你不想缓存失效时非更新NumberOfViews等重要性质。
在这些情况下,试着SaveAllChanges(invalidateCacheDependencies:false),之前更新数据。
2- 然后正常查询缓存的结果:var products = context.Products.Include(x => x.Tags).FirstOrDefault();我们可以使用新的“缓存()的扩展方法:var products = context.Products.Include(x => x.Tags).Cacheable().FirstOrDefault(); // Async methods are supported too.注意:
适合使用全球网站的查询缓存设置,公共的文章或评论列表
而不是经常改变,私人或特定的数据,每个用户。
如果一个页面需要身份验证,其数据不应该被缓存。
开源地址: https://github.com/VahidN/EFSecondLevelCache

上一篇:春运来了,刷票是必备的技能。
下一篇:Mac shell 添加VPN 路由

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款