using NetAdmin.Domain.Contexts; using NetAdmin.Domain.DbMaps.Dependency; namespace NetAdmin.Application.Repositories; /// public sealed class Repository : DefaultRepository, IRepository where TEntity : EntityBase { /// /// Initializes a new instance of the class. /// public Repository(IFreeSql fSql, UnitOfWorkManager uowManger, ContextUserToken userToken) // : base(fSql, uowManger) { UserToken = userToken; } /// /// 当前上下文关联的用户 /// public ContextUserToken UserToken { get; } /// /// 递归删除 /// /// exp /// 禁用全局过滤器名 public async Task DeleteRecursiveAsync( // Expression> exp, params string[] disableGlobalFilterNames) { _ = await Select.Where(exp) .DisableGlobalFilter(disableGlobalFilterNames) .AsTreeCte() .ToDelete() .ExecuteAffrowsAsync(); return true; } /// /// 获得Dto /// /// 主键 public Task GetAsync(long id) { return Select.WhereDynamic(id).ToOneAsync(); } /// /// 根据条件获取Dto /// public Task GetAsync(Expression> exp) { return Select.Where(exp).ToOneAsync(); } /// /// 根据条件获取实体 /// public Task GetAsync(Expression> exp) { return Select.Where(exp).ToOneAsync(); } /// /// 获取分页列表 /// /// 动态过滤器 /// 页码 /// 页容量 /// 分页列表和总条数 public async Task<(IEnumerable List, long Total)> GetPagedListAsync( DynamicFilterInfo dynamicFilterInfo, int page, int pageSize) { var list = await Select.WhereDynamicFilter(dynamicFilterInfo) .Count(out var total) .Page(page, pageSize) .ToListAsync(); return (list, total); } }