MenuRepository.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using EFCoreSecondLevelCacheInterceptor;
  2. using Masuit.MyBlogs.Core.Infrastructure.Repository.Interface;
  3. using Masuit.MyBlogs.Core.Models.Entity;
  4. using Microsoft.EntityFrameworkCore;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Linq.Expressions;
  9. using Z.EntityFramework.Plus;
  10. namespace Masuit.MyBlogs.Core.Infrastructure.Repository
  11. {
  12. public partial class MenuRepository : BaseRepository<Menu>, IMenuRepository
  13. {
  14. /// <summary>
  15. /// 添加实体
  16. /// </summary>
  17. /// <param name="t">需要添加的实体</param>
  18. /// <returns>添加成功</returns>
  19. public override Menu AddEntity(Menu t)
  20. {
  21. DataContext.Add(t);
  22. return t;
  23. }
  24. /// <summary>
  25. /// 基本查询方法,获取一个集合
  26. /// </summary>
  27. /// <typeparam name="TS">排序</typeparam>
  28. /// <param name="where">查询条件</param>
  29. /// <param name="orderby">排序字段</param>
  30. /// <param name="isAsc">是否升序</param>
  31. /// <returns>还未执行的SQL语句</returns>
  32. public override IOrderedQueryable<Menu> GetQuery<TS>(Expression<Func<Menu, bool>> @where, Expression<Func<Menu, TS>> @orderby, bool isAsc = true)
  33. {
  34. return isAsc ? DataContext.Menu.Include(m => m.Children).ThenInclude(m => m.Children).ThenInclude(m => m.Children).Where(where).OrderBy(orderby) : DataContext.Menu.Include(m => m.Children).ThenInclude(m => m.Children).ThenInclude(m => m.Children).Where(where).OrderByDescending(orderby);
  35. }
  36. /// <summary>
  37. /// 基本查询方法,获取一个集合,优先从二级缓存读取
  38. /// </summary>
  39. /// <param name="where">查询条件</param>
  40. /// <returns>还未执行的SQL语句</returns>
  41. public override List<Menu> GetQueryFromCache(Expression<Func<Menu, bool>> @where)
  42. {
  43. return DataContext.Menu.Include(m => m.Children).ThenInclude(m => m.Children).ThenInclude(m => m.Children).Where(where).Cacheable().ToList();
  44. }
  45. }
  46. }