懒得勤快 5 лет назад
Родитель
Сommit
d29441d247

+ 4 - 5
src/Masuit.MyBlogs.Core/Controllers/DashboardController.cs

@@ -1,5 +1,4 @@
-using EFSecondLevelCache.Core;
-using Masuit.MyBlogs.Core.Infrastructure.Services.Interface;
+using Masuit.MyBlogs.Core.Infrastructure.Services.Interface;
 using Masuit.MyBlogs.Core.Models.Enum;
 using Masuit.Tools.Logging;
 using Microsoft.AspNetCore.Mvc;
@@ -49,20 +48,20 @@ namespace Masuit.MyBlogs.Core.Controllers
                 p.Title,
                 p.PostDate,
                 p.Author
-            }).Cacheable();
+            }).ToList();
             var msgs = LeaveMessageService.GetQuery(m => m.Status == Status.Pending).Select(p => new
             {
                 p.Id,
                 p.PostDate,
                 p.NickName
-            }).Cacheable();
+            }).ToList();
             var comments = CommentService.GetQuery(c => c.Status == Status.Pending).Select(p => new
             {
                 p.Id,
                 p.CommentDate,
                 p.PostId,
                 p.NickName
-            }).Cacheable();
+            }).ToList();
             return ResultData(new
             {
                 post,

+ 4 - 4
src/Masuit.MyBlogs.Core/Controllers/HomeController.cs

@@ -1,5 +1,4 @@
-using EFSecondLevelCache.Core;
-using Masuit.LuceneEFCore.SearchEngine.Linq;
+using Masuit.LuceneEFCore.SearchEngine.Linq;
 using Masuit.MyBlogs.Core.Extensions;
 using Masuit.MyBlogs.Core.Infrastructure.Repository;
 using Masuit.MyBlogs.Core.Infrastructure.Services.Interface;
@@ -18,6 +17,7 @@ using System.Linq.Dynamic.Core;
 using System.Linq.Expressions;
 using System.Runtime.InteropServices;
 using System.Threading.Tasks;
+using Z.EntityFramework.Plus;
 
 namespace Masuit.MyBlogs.Core.Controllers
 {
@@ -166,9 +166,9 @@ namespace Masuit.MyBlogs.Core.Controllers
                 1 => nameof(OrderBy.VoteUpCount),
                 2 => nameof(OrderBy.AverageViewCount),
                 _ => nameof(OrderBy.TotalViewCount)
-            } + " desc").Skip(0).Take(5).Cacheable().ToList(); //热门文章
+            } + " desc").Skip(0).Take(5).FromCache().ToList(); //热门文章
             var newdic = new Dictionary<string, int>(); //标签云最终结果
-            var tagdic = postsQuery.Where(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Distinct().Cacheable().AsParallel().SelectMany(s => s.Split(',', ',')).GroupBy(s => s).ToDictionary(g => g.Key, g => g.Count()); //统计标签
+            var tagdic = postsQuery.Where(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Distinct().FromCache().AsParallel().SelectMany(s => s.Split(',', ',')).GroupBy(s => s).ToDictionary(g => g.Key, g => g.Count()); //统计标签
 
             if (tagdic.Any())
             {

+ 6 - 7
src/Masuit.MyBlogs.Core/Controllers/PostController.cs

@@ -1,5 +1,4 @@
-using EFSecondLevelCache.Core;
-using Hangfire;
+using Hangfire;
 using Masuit.LuceneEFCore.SearchEngine.Extensions;
 using Masuit.LuceneEFCore.SearchEngine.Interfaces;
 using Masuit.LuceneEFCore.SearchEngine.Linq;
@@ -197,7 +196,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <returns></returns>
         public ActionResult Publish()
         {
-            var list = PostService.GetQuery(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Distinct().Cacheable().AsParallel().SelectMany(s => s.Split(',', ',')).OrderBy(s => s).ToHashSet();
+            var list = PostService.GetQuery(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Distinct().ToList().SelectMany(s => s.Split(',', ',')).OrderBy(s => s).ToHashSet();
             ViewBag.Category = CategoryService.GetQueryFromCache(c => c.Status == Status.Available).ToList();
             return View(list);
         }
@@ -257,7 +256,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         [ResponseCache(Duration = 600, VaryByHeader = "Cookie")]
         public ActionResult GetTag()
         {
-            var list = Enumerable.AsEnumerable(PostService.GetQuery(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Distinct().Cacheable()).SelectMany(s => s.Split(',', ',')).OrderBy(s => s).ToHashSet();
+            var list = PostService.GetQuery(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Distinct().ToList().SelectMany(s => s.Split(',', ',')).OrderBy(s => s).ToHashSet();
             return ResultData(list);
         }
 
@@ -268,20 +267,20 @@ namespace Masuit.MyBlogs.Core.Controllers
         [Route("all"), ResponseCache(Duration = 600, VaryByHeader = "Cookie")]
         public ActionResult All()
         {
-            var tags = Enumerable.AsEnumerable(PostService.GetQuery(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Cacheable()).SelectMany(s => s.Split(',', ',')).OrderBy(s => s).ToList(); //tag
+            var tags = PostService.GetQuery(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).ToList().SelectMany(s => s.Split(',', ',')).OrderBy(s => s).ToList(); //tag
             ViewBag.tags = tags.GroupBy(t => t).OrderByDescending(g => g.Count()).ThenBy(g => g.Key);
             ViewBag.cats = CategoryService.GetAll(c => c.Post.Count, false).Select(c => new TagCloudViewModel
             {
                 Id = c.Id,
                 Name = c.Name,
                 Count = c.Post.Count(p => p.Status == Status.Pended || CurrentUser.IsAdmin)
-            }).Cacheable().ToList(); //category
+            }).ToList(); //category
             ViewBag.seminars = SeminarService.GetAll(c => c.Post.Count, false).Select(c => new TagCloudViewModel
             {
                 Id = c.Id,
                 Name = c.Title,
                 Count = c.Post.Count(p => p.Post.Status == Status.Pended || CurrentUser.IsAdmin)
-            }).Cacheable().ToList(); //seminars
+            }).ToList(); //seminars
             return View();
         }
 

+ 4 - 5
src/Masuit.MyBlogs.Core/Controllers/SubscribeController.cs

@@ -1,5 +1,4 @@
-using EFSecondLevelCache.Core;
-using Hangfire;
+using Hangfire;
 using Masuit.LuceneEFCore.SearchEngine.Linq;
 using Masuit.MyBlogs.Core.Common;
 using Masuit.MyBlogs.Core.Configs;
@@ -7,7 +6,6 @@ using Masuit.MyBlogs.Core.Extensions;
 using Masuit.MyBlogs.Core.Infrastructure.Services.Interface;
 using Masuit.MyBlogs.Core.Models.Entity;
 using Masuit.MyBlogs.Core.Models.Enum;
-using Masuit.Tools;
 using Masuit.Tools.DateTimeExt;
 using Masuit.Tools.Logging;
 using Masuit.Tools.Security;
@@ -21,6 +19,7 @@ using System.Net;
 using System.Text;
 using System.Threading.Tasks;
 using WilderMinds.RssSyndication;
+using Z.EntityFramework.Plus;
 
 namespace Masuit.MyBlogs.Core.Controllers
 {
@@ -92,7 +91,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                 Permalink = scheme + "://" + host + "/" + p.Id,
                 Guid = p.Id.ToString(),
                 FullHtmlContent = p.Content.GetSummary(300, 50)
-            }).Cacheable().ToList();
+            }).FromCache().ToList();
             var feed = new Feed()
             {
                 Title = CommonHelper.SystemSettings["Title"],
@@ -138,7 +137,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                 Permalink = scheme + "://" + host + "/" + p.Id,
                 Guid = p.Id.ToString(),
                 FullHtmlContent = p.Content.GetSummary(300, 50)
-            }).Cacheable().ToList();
+            }).FromCache().ToList();
             var feed = new Feed()
             {
                 Title = CommonHelper.SystemSettings["Domain"] + $":分类{category.Name}文章订阅",

+ 0 - 5
src/Masuit.MyBlogs.Core/Controllers/SystemController.cs

@@ -89,11 +89,6 @@ namespace Masuit.MyBlogs.Core.Controllers
                     c.Time,
                     c.MemoryUsage
                 }),
-                temp = MyHub.PerformanceCounter.Select(c => new[]
-                {
-                    c.Time,
-                    c.Temperature
-                }),
                 read = MyHub.PerformanceCounter.Select(c => new[]
                 {
                     c.Time,

+ 0 - 4
src/Masuit.MyBlogs.Core/Extensions/MiddlewareExtension.cs

@@ -1,7 +1,6 @@
 using AutoMapper;
 using AutoMapper.Extensions.ExpressionMapping;
 using CacheManager.Core;
-using EFSecondLevelCache.Core;
 using Masuit.MyBlogs.Core.Configs;
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.ResponseCompression;
@@ -27,9 +26,6 @@ namespace Masuit.MyBlogs.Core.Extensions
         /// <returns></returns>
         public static IServiceCollection AddCacheConfig(this IServiceCollection services)
         {
-            //配置EF二级缓存
-            services.AddEFSecondLevelCache();
-            // 配置EF二级缓存策略
             services.AddSingleton(typeof(ICacheManager<>), typeof(BaseCacheManager<>));
             services.AddSingleton(new ConfigurationBuilder().WithJsonSerializer().WithMicrosoftMemoryCacheHandle().WithExpiration(ExpirationMode.Absolute, TimeSpan.FromMinutes(5)).Build());
             return services;

+ 0 - 6
src/Masuit.MyBlogs.Core/Hubs/MyHub.cs

@@ -27,11 +27,6 @@ namespace Masuit.MyBlogs.Core.Hubs
         /// </summary>
         public double CpuLoad { get; set; }
 
-        /// <summary>
-        /// CPU核心温度
-        /// </summary>
-        public double Temperature { get; set; }
-
         /// <summary>
         /// 内存使用率
         /// </summary>
@@ -190,7 +185,6 @@ namespace Masuit.MyBlogs.Core.Hubs
             {
                 Time = time,
                 CpuLoad = load,
-                Temperature = temperature,
                 MemoryUsage = mem,
                 DiskRead = read,
                 DiskWrite = write,

+ 1 - 13
src/Masuit.MyBlogs.Core/Infrastructure/DataContext.cs

@@ -1,9 +1,6 @@
-using EFSecondLevelCache.Core;
-using EFSecondLevelCache.Core.Contracts;
-using Masuit.MyBlogs.Core.Models.Entity;
+using Masuit.MyBlogs.Core.Models.Entity;
 using Microsoft.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore.Design;
-using Microsoft.EntityFrameworkCore.Infrastructure;
 
 namespace Masuit.MyBlogs.Core.Infrastructure
 {
@@ -48,15 +45,6 @@ namespace Masuit.MyBlogs.Core.Infrastructure
             modelBuilder.Entity<SeminarPostHistoryVersion>().Property(s => s.PostHistoryVersionId).HasColumnName("PostHistoryVersion_Id");
         }
 
-        public override int SaveChanges()
-        {
-            ChangeTracker.DetectChanges();
-            var changedEntityNames = this.GetChangedEntityNames();
-            var result = base.SaveChanges();
-            this.GetService<IEFCacheServiceProvider>().InvalidateCacheDependencies(changedEntityNames);
-            return result;
-        }
-
         public virtual DbSet<Broadcast> Broadcast { get; set; }
         public virtual DbSet<Category> Category { get; set; }
         public virtual DbSet<Comment> Comment { get; set; }

+ 53 - 22
src/Masuit.MyBlogs.Core/Infrastructure/Repository/BaseRepository.cs

@@ -1,17 +1,18 @@
 using AutoMapper;
 using AutoMapper.QueryableExtensions;
-using EFSecondLevelCache.Core;
 using Masuit.MyBlogs.Core.Infrastructure.Repository.Interface;
 using Masuit.Tools;
 using Masuit.Tools.Core.AspNetCore;
 using Masuit.Tools.Models;
 using Masuit.Tools.Systems;
 using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Caching.Memory;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq.Expressions;
 using System.Threading.Tasks;
+using Z.EntityFramework.Plus;
 
 namespace Masuit.MyBlogs.Core.Infrastructure.Repository
 {
@@ -47,9 +48,12 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// 从二级缓存获取所有实体
         /// </summary>
         /// <returns>还未执行的SQL语句</returns>
-        public virtual EFCachedDbSet<T> GetAllFromCache()
+        public virtual IEnumerable<T> GetAllFromCache()
         {
-            return DataContext.Set<T>().Cacheable();
+            return DataContext.Set<T>().FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            });
         }
 
         /// <summary>
@@ -69,7 +73,10 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>还未执行的SQL语句</returns>
         public virtual IEnumerable<TDto> GetAllFromCache<TDto>() where TDto : class
         {
-            return DataContext.Set<T>().AsNoTracking().ProjectTo<TDto>(MapperConfig).Cacheable();
+            return DataContext.Set<T>().AsNoTracking().ProjectTo<TDto>(MapperConfig).FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            });
         }
 
         /// <summary>
@@ -105,7 +112,10 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>还未执行的SQL语句</returns>
         public virtual IEnumerable<T> GetAllFromCache<TS>(Expression<Func<T, TS>> @orderby, bool isAsc = true)
         {
-            return GetAll(orderby, isAsc).Cacheable();
+            return GetAll(orderby, isAsc).FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            });
         }
 
         /// <summary>
@@ -131,7 +141,10 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>还未执行的SQL语句</returns>
         public virtual IEnumerable<TDto> GetAllFromCache<TS, TDto>(Expression<Func<T, TS>> @orderby, bool isAsc = true) where TDto : class
         {
-            return GetAllNoTracking(orderby, isAsc).ProjectTo<TDto>(MapperConfig).Cacheable();
+            return GetAllNoTracking(orderby, isAsc).ProjectTo<TDto>(MapperConfig).FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            });
         }
 
         /// <summary>
@@ -164,7 +177,10 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>还未执行的SQL语句</returns>
         public virtual IEnumerable<T> GetQueryFromCache(Expression<Func<T, bool>> @where)
         {
-            return DataContext.Set<T>().Where(@where).Cacheable();
+            return DataContext.Set<T>().Where(@where).FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            });
         }
 
         /// <summary>
@@ -177,7 +193,10 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>还未执行的SQL语句</returns>
         public virtual IEnumerable<T> GetQueryFromCache<TS>(Expression<Func<T, bool>> @where, Expression<Func<T, TS>> @orderby, bool isAsc = true)
         {
-            return GetQuery(where, orderby, isAsc).Cacheable();
+            return GetQuery(where, orderby, isAsc).FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            });
         }
 
         /// <summary>
@@ -234,7 +253,10 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体集合</returns>
         public virtual IEnumerable<TDto> GetQueryFromCache<TDto>(Expression<Func<T, bool>> @where) where TDto : class
         {
-            return DataContext.Set<T>().Where(@where).AsNoTracking().ProjectTo<TDto>(MapperConfig).Cacheable();
+            return DataContext.Set<T>().Where(@where).AsNoTracking().ProjectTo<TDto>(MapperConfig).FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            });
         }
 
         /// <summary>
@@ -248,7 +270,10 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>还未执行的SQL语句</returns>
         public virtual IEnumerable<TDto> GetQueryFromCache<TS, TDto>(Expression<Func<T, bool>> @where, Expression<Func<T, TS>> @orderby, bool isAsc = true) where TDto : class
         {
-            return GetQueryNoTracking(where, orderby, isAsc).ProjectTo<TDto>(MapperConfig).Cacheable();
+            return GetQueryNoTracking(where, orderby, isAsc).ProjectTo<TDto>(MapperConfig).FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            });
         }
 
         /// <summary>
@@ -268,7 +293,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体</returns>
         public virtual T GetFromCache(Expression<Func<T, bool>> @where)
         {
-            return DataContext.Set<T>().Where(where).Cacheable().FirstOrDefault();
+            return DataContext.Set<T>().Where(where).DeferredFirstOrDefault().Execute();
         }
 
         /// <summary>
@@ -294,7 +319,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体</returns>
         public virtual T GetFromCache<TS>(Expression<Func<T, bool>> @where, Expression<Func<T, TS>> @orderby, bool isAsc = true)
         {
-            return isAsc ? DataContext.Set<T>().OrderBy(orderby).Where(where).Cacheable().FirstOrDefault() : DataContext.Set<T>().OrderByDescending(orderby).Where(where).Cacheable().FirstOrDefault();
+            return isAsc ? DataContext.Set<T>().OrderBy(orderby).Where(where).DeferredFirstOrDefault().Execute() : DataContext.Set<T>().OrderByDescending(orderby).Where(where).DeferredFirstOrDefault().Execute();
         }
 
         /// <summary>
@@ -308,7 +333,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>映射实体</returns>
         public virtual TDto GetFromCache<TS, TDto>(Expression<Func<T, bool>> @where, Expression<Func<T, TS>> @orderby, bool isAsc = true) where TDto : class
         {
-            return isAsc ? DataContext.Set<T>().Where(where).OrderBy(orderby).ProjectTo<TDto>(MapperConfig).Cacheable().FirstOrDefault() : DataContext.Set<T>().Where(where).OrderByDescending(orderby).ProjectTo<TDto>(MapperConfig).Cacheable().FirstOrDefault(); ;
+            return isAsc ? DataContext.Set<T>().Where(where).OrderBy(orderby).ProjectTo<TDto>(MapperConfig).DeferredFirstOrDefault().Execute() : DataContext.Set<T>().Where(where).OrderByDescending(orderby).ProjectTo<TDto>(MapperConfig).DeferredFirstOrDefault().Execute();
         }
 
         /// <summary>
@@ -374,7 +399,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体</returns>
         public virtual TDto GetFromCache<TDto>(Expression<Func<T, bool>> @where) where TDto : class
         {
-            return DataContext.Set<T>().Where(where).ProjectTo<TDto>(MapperConfig).Cacheable().FirstOrDefault();
+            return DataContext.Set<T>().Where(where).ProjectTo<TDto>(MapperConfig).DeferredFirstOrDefault().Execute();
         }
 
         /// <summary>
@@ -671,10 +696,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>添加成功</returns>
         public virtual IEnumerable<T> AddEntities(IList<T> list)
         {
-            foreach (T t in list)
-            {
-                yield return AddEntity(t);
-            }
+            return list.Select(AddEntity);
         }
 
         public override void Dispose(bool disposing)
@@ -694,7 +716,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <param name="page">当前页</param>
         /// <param name="size">页大小</param>
         /// <returns></returns>
-        public static PagedList<T> ToCachedPagedList<T>(this IOrderedQueryable<T> query, int page, int size)
+        public static PagedList<T> ToCachedPagedList<T>(this IOrderedQueryable<T> query, int page, int size) where T : class
         {
             var totalCount = query.Count();
             if (page * size > totalCount)
@@ -707,7 +729,10 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
                 page = 1;
             }
 
-            var list = query.Skip(size * (page - 1)).Take(size).Cacheable().ToList();
+            var list = query.Skip(size * (page - 1)).Take(size).FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            }).ToList();
             return new PagedList<T>(list, page, size, totalCount);
         }
 
@@ -719,6 +744,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <param name="query"></param>
         /// <param name="page">当前页</param>
         /// <param name="size">页大小</param>
+        /// <param name="mapper"></param>
         /// <returns></returns>
         public static PagedList<TDto> ToPagedList<T, TDto>(this IOrderedQueryable<T> query, int page, int size, MapperConfiguration mapper)
         {
@@ -736,6 +762,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
             var list = query.Skip(size * (page - 1)).Take(size).ProjectTo<TDto>(mapper).ToList();
             return new PagedList<TDto>(list, page, size, totalCount);
         }
+
         /// <summary>
         /// 生成分页集合
         /// </summary>
@@ -744,8 +771,9 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <param name="query"></param>
         /// <param name="page">当前页</param>
         /// <param name="size">页大小</param>
+        /// <param name="mapper"></param>
         /// <returns></returns>
-        public static PagedList<TDto> ToCachedPagedList<T, TDto>(this IOrderedQueryable<T> query, int page, int size, MapperConfiguration mapper)
+        public static PagedList<TDto> ToCachedPagedList<T, TDto>(this IOrderedQueryable<T> query, int page, int size, MapperConfiguration mapper) where TDto : class
         {
             var totalCount = query.Count();
             if (page * size > totalCount)
@@ -758,7 +786,10 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
                 page = 1;
             }
 
-            var list = query.Skip(size * (page - 1)).Take(size).ProjectTo<TDto>(mapper).Cacheable().ToList();
+            var list = query.Skip(size * (page - 1)).Take(size).ProjectTo<TDto>(mapper).FromCache(new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            }).ToList();
             return new PagedList<TDto>(list, page, size, totalCount);
         }
     }

+ 2 - 3
src/Masuit.MyBlogs.Core/Infrastructure/Repository/Interface/IBaseRepository.cs

@@ -1,5 +1,4 @@
-using EFSecondLevelCache.Core;
-using Masuit.MyBlogs.Core.Models.Entity;
+using Masuit.MyBlogs.Core.Models.Entity;
 using Masuit.Tools.Models;
 using System;
 using System.Collections.Generic;
@@ -27,7 +26,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository.Interface
         /// 从二级缓存获取所有实体
         /// </summary>
         /// <returns>还未执行的SQL语句</returns>
-        EFCachedDbSet<T> GetAllFromCache();
+        IEnumerable<T> GetAllFromCache();
 
         /// <summary>
         /// 获取所有实体

+ 6 - 6
src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj

@@ -28,25 +28,25 @@
         <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
         <PackageReference Include="CacheManager.Microsoft.Extensions.Caching.Memory" Version="2.0.0-beta-1629" />
         <PackageReference Include="CacheManager.Serialization.Json" Version="2.0.0-beta-1629" />
-        <PackageReference Include="CSRedisCore" Version="3.4.5" />
+        <PackageReference Include="CSRedisCore" Version="3.5.5" />
         <PackageReference Include="DocxToHtml_ldqk" Version="1.0.4" />
-        <PackageReference Include="EFSecondLevelCache.Core" Version="2.9.1" />
         <PackageReference Include="Hangfire" Version="1.7.9" />
         <PackageReference Include="Hangfire.Autofac" Version="2.3.1" />
         <PackageReference Include="Hangfire.MemoryStorage" Version="1.7.0" />
         <PackageReference Include="htmldiff.net-core" Version="1.3.6" />
         <PackageReference Include="IP2Region" Version="1.2.0" />
         <PackageReference Include="Karambolo.AspNetCore.Bundling.NUglify" Version="3.1.0" />
-        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.2" />
-        <PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="3.1.2" />
-        <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="3.1.2" />
+        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.3" />
+        <PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="3.1.3" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="3.1.3" />
         <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.1.0" />
         <PackageReference Include="MiniProfiler.EntityFrameworkCore" Version="4.1.0" />
         <PackageReference Include="PanGu.HighLight" Version="1.0.0" />
         <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.1" />
-        <PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.22" />
+        <PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.23" />
         <PackageReference Include="WilderMinds.RssSyndication" Version="1.6.0" />
         <PackageReference Include="WinInsider.System.Net.Http.Formatting" Version="1.0.14" />
+        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="3.0.45" />
     </ItemGroup>
     <ItemGroup>
         <Content Update="appsettings.json">

+ 6 - 0
src/Masuit.MyBlogs.Core/Program.cs

@@ -2,10 +2,12 @@
 using Masuit.MyBlogs.Core.Hubs;
 using Masuit.Tools;
 using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Caching.Memory;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
 using System;
+using Z.EntityFramework.Plus;
 
 namespace Masuit.MyBlogs.Core
 {
@@ -13,6 +15,10 @@ namespace Masuit.MyBlogs.Core
     {
         public static void Main(string[] args)
         {
+            QueryCacheManager.DefaultMemoryCacheEntryOptions = new MemoryCacheEntryOptions()
+            {
+                AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
+            };
             MyHub.Init();
             CreateWebHostBuilder(args).Build().Run();
         }

+ 1 - 1
src/Masuit.MyBlogs.Core/Views/Post/Details.cshtml

@@ -62,7 +62,7 @@
                                     {
                                         <div class="pull-right margin-right20">
                                             <div>
-                                                @foreach (string s in Model.Label.Split(',', ',', ' '))
+                                                @foreach (string s in Model.Label.Split(',', ','))
                                                 {
                                                     if (!string.IsNullOrEmpty(s))
                                                     {

+ 1 - 1
src/Masuit.MyBlogs.Core/Views/Post/Details_Admin.cshtml

@@ -64,7 +64,7 @@
                                     {
                                         <div class="pull-right margin-right20">
                                             <div>
-                                                @foreach (string s in Model.Label.Split(',', ',', ' '))
+                                                @foreach (string s in Model.Label.Split(',', ','))
                                                 {
                                                     if (!string.IsNullOrEmpty(s))
                                                     {

+ 7 - 9
src/Masuit.MyBlogs.Core/Views/Shared/_Layout.cshtml

@@ -24,12 +24,12 @@
     <meta name="keywords" content="@(CommonHelper.SystemSettings["Keyword"]+","+ViewBag.Keyword)" />
     <meta name="description" content="@(CommonHelper.SystemSettings["Description"]+","+ViewBag.Keyword)" />
     @Html.Raw(CommonHelper.SystemSettings.GetOrAdd("Styles", ""))
-    <link href="https://cdn.staticfile.org/normalize/8.0.1/normalize.min.css" rel="stylesheet">
-    <link href="https://cdn.staticfile.org/limonte-sweetalert2/6.11.5/sweetalert2.min.css" rel="stylesheet">
-    <link href="https://cdn.staticfile.org/notie/4.3.1/notie.min.css" rel="stylesheet">
-    <link href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
-    <link href="https://cdn.staticfile.org/animate.css/3.7.0/animate.min.css" rel="stylesheet">
-    <link href="~/Assets/layui/css/layui.min.css" rel="stylesheet" />
+    <link href="https://cdn.staticfile.org/normalize/8.0.1/normalize.min.css" rel="stylesheet" async>
+    <link href="https://cdn.staticfile.org/limonte-sweetalert2/6.11.5/sweetalert2.min.css" rel="stylesheet" async>
+    <link href="https://cdn.staticfile.org/notie/4.3.1/notie.min.css" rel="stylesheet" async>
+    <link href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" async>
+    <link href="https://cdn.staticfile.org/animate.css/3.7.0/animate.min.css" rel="stylesheet" async>
+    <link href="~/Assets/layui/css/layui.min.css" rel="stylesheet" async>
     <environment names="Development">
         <link href="~/Content/bootstrap.min.css" rel="stylesheet">
         <link href="~/fonts/icomoon.min.css" rel="stylesheet" />
@@ -56,9 +56,7 @@
     <script src="https://cdn.staticfile.org/jquery.form/4.2.2/jquery.form.min.js" async defer></script>
     <script src="https://cdn.staticfile.org/jquery-mobile/1.4.5/jquery.mobile.min.js"></script>
     <script src="https://cdn.staticfile.org/linq.js/2.2.0.2/linq.min.js" async defer></script>
-    <script src="https://cdn.staticfile.org/wow/1.1.2/wow.min.js" async defer></script>
-    <script src="https://cdn.staticfile.org/ifvisible/1.0.6/ifvisible.min.js" async defer></script>
-    <script src="https://cdn.staticfile.org/jquery_lazyload/1.9.7/jquery.lazyload.min.js" async defer></script>
+    <script src="https://cdn.staticfile.org/jquery_lazyload/1.9.7/jquery.lazyload.min.js"></script>
     <script src="~/Scripts/layer/layer.js"></script>
     <script src="~/Assets/layui/layui.min.js"></script>
     <environment names="Development">

+ 0 - 10
src/Masuit.MyBlogs.Core/wwwroot/Scripts/global/scripts.js

@@ -16,16 +16,6 @@
     }
 })(jQuery);
 $(function() {
-    window.ifvisible.blur(function() {
-        $("body").animate({
-                opacity: 0.5
-            }, 100);
-    });
-    window.ifvisible.wakeup(function(e) {
-        $("body").animate({
-                opacity: 1
-            }, 100);
-    });
     popBrowserTips();
     $("img").lazyload({
         effect: "fadeIn", //渐现,show(直接显示),fadeIn(淡入),slideDown(下拉)

+ 3 - 55
src/Masuit.MyBlogs.Core/wwwroot/ng-views/controllers/dashboard.js

@@ -6,7 +6,6 @@
 	var iodata = [];
 	var currentCpuLoad = 0;
 	var currentMemUsage = 0;
-	var currentTemper = 0;
 	var currentRead = 0;
 	var currentWrite = 0;
 	var currentUp = 0;
@@ -25,13 +24,11 @@
 		window.hub.start().then(() => {
 		    window.hub.stream("Counter", 5000).subscribe({
 			    next: (item) => {
-			        loadsdata.push([item.time,item.cpuLoad,item.memoryUsage,item.temperature]);
+			        loadsdata.push([item.time,item.cpuLoad,item.memoryUsage]);
 					currentCpuLoad = item.cpuLoad;
 					currentMemUsage = item.memoryUsage;
-					currentTemper = item.temperature;
 					$scope.cpu.CpuLoad = currentCpuLoad;
 					$scope.memory.MemoryUsage = currentMemUsage;
-					$scope.cpu.Temperature = currentTemper;
 
 					iodata.push([item.time,item.diskRead,item.diskWrite]);
 					currentRead = item.diskRead;
@@ -177,13 +174,6 @@
 					},
 					min: 0,
 					opposite: false
-				}, {
-					title: {
-						text: 'CPU内核温度(℃)'
-					},
-					min: 30,
-					max:90,
-					opposite: true
 				}
 			],
 			exporting: {
@@ -240,8 +230,7 @@
 				formatter: function() {
 					return '时间点:<b>' + Highcharts.dateFormat("%H:%M:%S", this.points[0].x) + '</b><br/>' +
 						'<span style="color:' + Highcharts.getOptions().colors[0] +  '">CPU使用率:<b>' + Highcharts.numberFormat(this.points[0].y, 2) + '%</b></span><br/>' +
-						'<span style="color:' + Highcharts.getOptions().colors[1] +'">内存使用率:<b>' + Highcharts.numberFormat(this.points[1].y, 2) + '%</b></span><br/>' +
-						'<span style="color:' + Highcharts.getOptions().colors[2] +'">CPU内核温度:<b>' + Highcharts.numberFormat(this.points[2].y, 0) + '℃</b></span><br/>';
+						'<span style="color:' + Highcharts.getOptions().colors[1] +'">内存使用率:<b>' + Highcharts.numberFormat(this.points[1].y, 2) + '%</b></span><br/>';
 				},
 				crosshairs: true,
 				shared: true
@@ -260,14 +249,6 @@
 				tooltip: {
 					valueSuffix: ' %'
 				}
-			}, {
-				name: 'CPU温度',
-				yAxis: 1,
-				data: data.temp,
-				type: 'spline',
-				tooltip: {
-					valueSuffix: '℃'
-				}
 			}]
 		});
 		Highcharts.stockChart("io",{
@@ -283,8 +264,7 @@
 					load: function() {
 						var series1 = this.series[0],
 							series2 = this.series[1],
-							series3 = this.series[2],
-							series4 = this.series[3];
+							series3 = this.series[2];
 						setInterval(function() {
 							let io = iodata.pop();
 							let net = netdata.pop();
@@ -292,7 +272,6 @@
 								series1.addPoint([io[0], io[1]], true, true);
 								series2.addPoint([io[0], io[2]], true, true);
 								series3.addPoint([net[0], net[2]], true, true);
-								series4.addPoint([net[0], net[2]], true, true);
 							}
 						}, 2000);
 					}
@@ -539,32 +518,6 @@
 			}
 		}]
 	}));
-	$('#container-temp').highcharts(Highcharts.merge(gaugeOptions, {
-		yAxis: {
-			min: 0,
-			max: 100,
-			title: {
-				text: 'CPU当前温度'
-			}
-		},
-		boost: {
-			useGPUTranslations: true
-		},
-		credits: {
-			enabled: false
-		},
-		series: [{
-			name: 'CPU当前温度',
-			data: [1],
-			dataLabels: {
-				format: '<div style="text-align:center"><span style="font-size:25px;color:' +
-					((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '">{y}℃</span><br/>'
-			},
-			tooltip: {
-				valueSuffix: ' ℃'
-			}
-		}]
-	}));
 	$('#container-io').highcharts(Highcharts.merge(gaugeOptions, {
 		yAxis: {
 			min: 0,
@@ -601,11 +554,6 @@
 			point = chart.series[0].points[0];
 			point.update(currentMemUsage);
 		}
-		chart = $('#container-temp').highcharts();
-		if (chart) {
-			point = chart.series[0].points[0];
-			point.update(currentTemper);
-		}
 		chart = $('#container-io').highcharts();
 		if (chart) {
 			point = chart.series[0].points[0];

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
src/Masuit.MyBlogs.Core/wwwroot/ng-views/controllers/dashboard.min.js


+ 8 - 15
src/Masuit.MyBlogs.Core/wwwroot/ng-views/views/dashboard.html

@@ -24,9 +24,11 @@
                             </tr>
                             <tr>
                                 <td>CPU型号</td>
-                                <th colspan="2">{{cpu.Type}}</th>
-                                <td>CPU位宽</td>
-                                <th colspan="2">{{cpu.DataWidth}} 位</th>
+                                <th>{{cpu.Type}}</th>
+                                <td>CPU基础频率</td>
+                                <th>{{cpu.CurrentClockSpeed}} MHz</th>
+                                <td>CPU睿频</td>
+                                <th>{{cpu.MaxClockSpeed}} MHz</th>
                             </tr>
                             <tr>
                                 <td>CPU个数</td>
@@ -36,14 +38,6 @@
                                 <td>CPU线程数</td>
                                 <th>{{cpu.NumberOfLogicalProcessors}} 线程</th>
                             </tr>
-                            <tr>
-                                <td>CPU基础频率</td>
-                                <th>{{cpu.CurrentClockSpeed}} MHz</th>
-                                <td>CPU睿频</td>
-                                <th>{{cpu.MaxClockSpeed}} MHz</th>
-                                <td>CPU温度</td>
-                                <th>{{cpu.Temperature}} ℃</th>
-                            </tr>
                             <tr>
                                 <td>CPU当前频率</td>
                                 <th>{{cpu.CpuLoad*cpu.MaxClockSpeed/100|number:2}} MHz</th>
@@ -101,10 +95,9 @@
             <h3 class="text-center">性能实时监控</h3>
         </div>
         <div class="row">
-            <div id="container-speed" class="col-md-3" style="height: 200px;"></div>
-            <div id="container-rpm" class="col-md-3" style="height: 200px;"></div>
-            <div id="container-temp" class="col-md-3" style="height: 200px;"></div>
-            <div id="container-io" class="col-md-3" style="height: 200px;"></div>
+            <div id="container-speed" class="col-md-4" style="height: 200px;"></div>
+            <div id="container-rpm" class="col-md-4" style="height: 200px;"></div>
+            <div id="container-io" class="col-md-4" style="height: 200px;"></div>
         </div>
     </div>
     <div>

Некоторые файлы не были показаны из-за большого количества измененных файлов