OL.FrameCore.Infrastructure/UnitOfWork/RepositoryBase.cs

(开头部分) 8KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace OL.FrameCore.Infrastructure.UnitOfWork
{
    /// <summary>
    /// Repository基类
    /// </summary>
    /// <typeparam name="TEntity"></typeparam>
    public class RepositoryBase<TEntity> : IRepositoryBase<TEntity> where TEntity : class
    {
        protected DbContext _dbContext;

        public IQueryable<TEntity> Table => _dbContext.Set<TEntity>().AsQueryable();

        public IQueryable<TEntity> TableNoTracking => _dbContext.Set<TEntity>().AsNoTracking().AsQueryable();

        public RepositoryBase(DbContext dbContext)
        {
            _dbContext = dbContext;
        }

        public List<TEntity> GetAllList()
        {
            return _dbContext.Set<TEntity>().AsNoTracking().ToList();
        }
        public async Task<List<TEntity>> GetAllListAsync()
        {
            return await _dbContext.Set<TEntity>().AsNoTracking().ToListAsync();
        }

        public List<TEntity> GetList(Expression<Func<TEntity, bool>> predicate, bool isNoTracking = true)
        {
            var query = isNoTracking ? _dbContext.Set<TEntity>().AsNoTracking() : _dbContext.Set<TEntity>();
            return query.Where(predicate).ToList();
        }
        public async Task<List<TEntity>> GetListAsync(Expression<Func<TEntity, bool>> predicate, bool isNoTracking = true)
        {
            var query = isNoTracking ? _dbContext.Set<TEntity>().AsNoTracking() : _dbContext.Set<TEntity>();
            return await query.Where(predicate).ToListAsync();
        }
        public PageData<TEntity> GetPageList(Expression<Func<TEntity, bool>> predicate, int pageIndex, int pageSize, bool isNoTracking = true)
        {
            PageData<TEntity> pageData = new PageData<TEntity>();
            var query = isNoTracking ? _dbContext.Set<TEntity>().AsNoTracking() : _dbContext.Set<TEntity>();
            pageData.Items = query.Where(predicate).Skip(pageIndex * pageSize).Take(pageSize).ToList();
            pageData.PageIndex = pageIndex;
            pageData.PageSize = pageSize;
            pageData.ItemsCount = query.Count();

            return pageData;
        }
        public async Task<PageData<TEntity>> GetPageListAsync(Expression<Func<TEntity, bool>> predicate, int pageIndex, int pageSize, bool isNoTracking = true)
        {
            PageData<TEntity> pageData = new PageData<TEntity>();
后面还有 155 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。