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);
}
}