帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:Entity Framework  CAC  Level  framework    Entity Framework 6  
Entity Framework 6.x Second Level Caching Library.

  • 源代码名称:EFSecondLevelCache
  • 源代码网址:http://www.github.com/VahidN/EFSecondLevelCache
  • EFSecondLevelCache源代码文档
  • EFSecondLevelCache源代码下载
  • Git URL:
    git://www.github.com/VahidN/EFSecondLevelCache.git
  • Git Clone代码到本地:
    git clone http://www.github.com/VahidN/EFSecondLevelCache
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/VahidN/EFSecondLevelCache
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • EFSecondLevelCache

    Entity Framework 6.x 二级高速缓存库。

    二级缓存是一个查询缓存。 EF命令的结果将存储在缓存中,这样相同的EF命令将从缓存中检索它们的数据,而不是再次对数据库执行它们。

    通过NuGet安装

    要安装 EFSecondLevelCache,请在软件包管理器控制台中运行以下命令:

    PM> Install-Package EFSecondLevelCache

    你还可以在NuGet上查看

    用法:

    通过重写SaveChanges方法以防止陈旧读取,设置了缓存失效

    namespaceEFSecondLevelCache.TestDataLayer.DataLayer{
     publicclassSampleContext : DbContext {
     //public DbSet<Product> Products { get; set; }publicSampleContext()
     : base("connectionString1")
     {
     }
     publicoverrideintSaveChanges()
     {
     return SaveAllChanges(invalidateCacheDependencies: true);
     }
     publicintSaveAllChanges(boolinvalidateCacheDependencies=true)
     {
     varchangedEntityNames = getChangedEntityNames();
     varresult = base.SaveChanges();
     if (invalidateCacheDependencies)
     {
     newEFCacheServiceProvider().InvalidateCacheDependencies(changedEntityNames);
     }
     return result;
     }
     privatestring[] getChangedEntityNames()
     {
     //Updated version of this method: EFSecondLevelCacheEFSecondLevelCache.TestsEFSecondLevelCache.TestDataLayerDataLayerSampleContext.csreturnthis.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-然后缓存正常查询的结果,如:

    varproducts = context.Products.Include(x => x.Tags).FirstOrDefault();

    我们可以使用新的Cacheable() 扩展方法:

    varproducts = context.Products.Include(x => x.Tags).Cacheable().FirstOrDefault(); //Async methods are supported too.

    注释:

    很好的查询缓存是站点的全局设置。public 文章或者注释列表,不经常更改,private 或者特定的数据给每个用户。 如果页需要身份验证,则不应缓存它的数据。



    文章标签:  framework  CAC  Level  Entity Framework  Entity Framework 6  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语