• EF 二级缓存 EFSecondLevelCache


    EFSecondLevelCache
    =======
    Entity Framework 6.x Second Level Caching Library.
    
    二级缓存是一个查询缓存。EF命令的结果将存储在缓存中,这相同的EF命令将从缓存中检索数据,而不是执行它们对数据库了。
    
    
    使用方法:
    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
  • 相关阅读:
    携程开源框架Apollo基础学习(一)
    nslookup,dig,host的用法详解
    curl命令学习
    Saltstack本地管理无master模式
    Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
    JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
    #{}和${}的区别是什么?
    为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
    MyBatis 与 Hibernate 有哪些不同?
    MyBatis 的好处是什么?
  • 原文地址:https://www.cnblogs.com/louby/p/6232646.html
Copyright © 2020-2023  润新知