Files
coreshoppro/CoreCms.Net.Services/BaseServices.cs

1076 lines
49 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/***********************************************************************
* Project: CoreCms
* ProjectName: 核心内容管理系统
* Web: https://www.corecms.net
* Author: 大灰灰
* Email: jianweie@163.com
* CreateTime: 2021/1/31 21:45:10
* Description: 暂无
***********************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.IRepository;
using CoreCms.Net.IServices;
using CoreCms.Net.Model.ViewModels.Basics;
using SqlSugar;
namespace CoreCms.Net.Services
{
public class BaseServices<T> : IBaseServices<T> where T : class, new()
{
//public IBaseRepository<TEntity> baseDal = new BaseRepository<TEntity>();
public IBaseRepository<T> BaseDal; //通过在子类的构造函数中注入,这里是基类,不用构造函数
#region
/// <summary>
/// 根据主值查询单条数据
/// </summary>
/// <param name="pkValue">主键值</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>泛型实体</returns>
public T QueryById(object pkValue, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.QueryById(pkValue, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据主值查询单条数据
/// </summary>
/// <param name="objId">id必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]如果是联合主键请使用Where条件</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>数据实体</returns>
public async Task<T> QueryByIdAsync(object objId, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.QueryByIdAsync(objId, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据主值列表查询单条数据
/// </summary>
/// <param name="lstIds">id列表必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]如果是联合主键请使用Where条件</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>数据实体列表</returns>
public List<T> QueryByIDs(object[] lstIds, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.QueryByIDs(lstIds, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据主值列表查询单条数据
/// </summary>
/// <param name="lstIds">id列表必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]如果是联合主键请使用Where条件</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>数据实体列表</returns>
public async Task<List<T>> QueryByIDsAsync(object[] lstIds, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.QueryByIDsAsync(lstIds, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据主值列表查询单条数据
/// </summary>
/// <param name="lstIds">id列表必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]如果是联合主键请使用Where条件</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>数据实体列表</returns>
public List<T> QueryByIDs(int[] lstIds, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.QueryByIDs(lstIds, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据主值列表查询单条数据
/// </summary>
/// <param name="lstIds">id列表必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]如果是联合主键请使用Where条件</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>数据实体列表</returns>
public async Task<List<T>> QueryByIDsAsync(int[] lstIds, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.QueryByIDsAsync(lstIds, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 查询表单所有数据(无分页,请慎用)
/// </summary>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public List<T> Query(bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
var list = BaseDal.Query(blUseNoLock, isDataCache, cacheTimes);
return list;
}
/// <summary>
/// 查询表单所有数据(无分页,请慎用)
/// </summary>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public async Task<List<T>> QueryAsync(bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.QueryAsync(blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="orderByPredicate">排序字段</param>
/// <param name="orderByType">排序顺序</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>泛型实体集合</returns>
public List<T> QueryListByClause(Expression<Func<T, bool>> predicate, Expression<Func<T, object>> orderByPredicate = null, OrderByType orderByType = OrderByType.Asc, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.QueryListByClause(predicate, orderByPredicate, orderByType, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="orderByPredicate">排序字段</param>
/// <param name="orderByType">排序顺序</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>泛型实体集合</returns>
public async Task<List<T>> QueryListByClauseAsync(Expression<Func<T, bool>> predicate, Expression<Func<T, object>> orderByPredicate = null, OrderByType orderByType = OrderByType.Asc, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.QueryListByClauseAsync(predicate, orderByPredicate, orderByType, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据条件查询一定数量数据
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="take">获取数量</param>
/// <param name="orderByPredicate">排序字段</param>
/// <param name="orderByType">排序顺序</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public List<T> QueryListByClause(Expression<Func<T, bool>> predicate, int take, Expression<Func<T, object>> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.QueryListByClause(predicate, take, orderByPredicate, orderByType, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据条件查询一定数量数据
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="take">获取数量</param>
/// <param name="orderByPredicate">排序字段</param>
/// <param name="orderByType">排序顺序</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public async Task<List<T>> QueryListByClauseAsync(Expression<Func<T, bool>> predicate, int take, Expression<Func<T, object>> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.QueryListByClauseAsync(predicate, take, orderByPredicate, orderByType, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public T QueryByClause(Expression<Func<T, bool>> predicate, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.QueryByClause(predicate, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <param name="blUseTranLock">是否使用锁</param>
/// <param name="dbLockType">数据锁类型</param>
/// <returns></returns>
public async Task<T> QueryByClauseAsync(Expression<Func<T, bool>> predicate, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue, bool blUseTranLock = false, DbLockType dbLockType = DbLockType.Wait)
{
return await BaseDal.QueryByClauseAsync(predicate, blUseNoLock, isDataCache, cacheTimes, blUseTranLock, dbLockType);
}
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="orderByPredicate">排序字段</param>
/// <param name="orderByType">排序顺序</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public T QueryByClause(Expression<Func<T, bool>> predicate, Expression<Func<T, object>> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
var entity = BaseDal.QueryByClause(predicate, orderByPredicate, orderByType, blUseNoLock, isDataCache, cacheTimes);
return entity;
}
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="orderByPredicate">排序字段</param>
/// <param name="orderByType">排序顺序</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <param name="blUseTranLock">是否使用锁</param>
/// <param name="dbLockType">数据锁类型</param>
/// <returns></returns>
public async Task<T> QueryByClauseAsync(Expression<Func<T, bool>> predicate, Expression<Func<T, object>> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue, bool blUseTranLock = false, DbLockType dbLockType = DbLockType.Wait)
{
return await BaseDal.QueryByClauseAsync(predicate, orderByPredicate, orderByType, blUseNoLock, isDataCache, cacheTimes, blUseTranLock, dbLockType);
}
#endregion
#region
/// <summary>
/// 写入实体数据
/// </summary>
/// <param name="entity">实体数据</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public int Insert(T entity, bool isRemoveDataCache = false)
{
return BaseDal.Insert(entity, isRemoveDataCache);
}
/// <summary>
/// 写入实体数据
/// </summary>
/// <param name="entity">实体数据</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<int> InsertAsync(T entity, bool isRemoveDataCache = false)
{
return await BaseDal.InsertAsync(entity, isRemoveDataCache);
}
/// <summary>
/// 写入实体数据
/// </summary>
/// <param name="entity">实体数据</param>
/// <param name="insertColumns">插入的列</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public int Insert(T entity, Expression<Func<T, object>> insertColumns, bool isRemoveDataCache = false)
{
return BaseDal.Insert(entity, insertColumns, isRemoveDataCache);
}
/// <summary>
/// 写入实体数据
/// </summary>
/// <param name="entity">实体数据</param>
/// <param name="insertColumns">插入的列</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<int> InsertAsync(T entity, Expression<Func<T, object>> insertColumns, bool isRemoveDataCache = false)
{
return await BaseDal.InsertAsync(entity, insertColumns, isRemoveDataCache);
}
/// <summary>
/// 写入实体数据
/// </summary>
/// <param name="entity">实体类</param>
/// <param name="insertColumns">需插入的字段</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool InsertGuid(T entity, Expression<Func<T, object>> insertColumns, bool isRemoveDataCache = false)
{
return BaseDal.InsertGuid(entity, insertColumns, isRemoveDataCache);
}
/// <summary>
/// 写入实体数据
/// </summary>
/// <param name="entity">实体类</param>
/// <param name="insertColumns">需插入的字段</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> InsertGuidAsync(T entity, Expression<Func<T, object>> insertColumns, bool isRemoveDataCache = false)
{
return await InsertGuidAsync(entity, insertColumns, isRemoveDataCache);
}
/// <summary>
/// 批量写入实体数据
/// </summary>
/// <param name="entity">实体类</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public int Insert(List<T> entity, bool isRemoveDataCache = false)
{
return BaseDal.Insert(entity, isRemoveDataCache);
}
/// <summary>
/// 批量写入实体数据
/// </summary>
/// <param name="entity">实体类</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<int> InsertAsync(List<T> entity, bool isRemoveDataCache = false)
{
return await BaseDal.InsertAsync(entity, isRemoveDataCache);
}
/// <summary>
/// 批量写入实体数据
/// </summary>
/// <param name="entity">实体类</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<int> InsertCommandAsync(List<T> entity, bool isRemoveDataCache = false)
{
return await BaseDal.InsertCommandAsync(entity, isRemoveDataCache);
}
#endregion
#region
/// <summary>
/// 批量更新实体数据
/// </summary>
/// <param name="entity"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool Update(List<T> entity, bool isRemoveDataCache = false)
{
return BaseDal.Update(entity, isRemoveDataCache);
}
/// <summary>
/// 批量更新实体数据
/// </summary>
/// <param name="entity"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> UpdateAsync(List<T> entity, bool isRemoveDataCache = false)
{
return await BaseDal.UpdateAsync(entity, isRemoveDataCache);
}
/// <summary>
/// 更新实体数据
/// </summary>
/// <param name="entity"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool Update(T entity, bool isRemoveDataCache = false)
{
return BaseDal.Update(entity, isRemoveDataCache);
}
/// <summary>
/// 更新实体数据
/// </summary>
/// <param name="entity"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> UpdateAsync(T entity, bool isRemoveDataCache = false)
{
return await BaseDal.UpdateAsync(entity, isRemoveDataCache);
}
/// <summary>
/// 更新某个字段
/// </summary>
/// <param name="columns">lambda表达式,如it => new Student() { Name = "a", CreateTime = DateTime.Now }</param>
/// <param name="where">lambda判断</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool Update(Expression<Func<T, T>> columns, Expression<Func<T, bool>> where, bool isRemoveDataCache = false)
{
return BaseDal.Update(columns, where, isRemoveDataCache);
}
/// <summary>
/// 更新某个字段
/// </summary>
/// <param name="columns">lambda表达式,如it => new Student() { Name = "a", CreateTime = DateTime.Now }</param>
/// <param name="where">lambda判断</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> UpdateAsync(Expression<Func<T, T>> columns, Expression<Func<T, bool>> where, bool isRemoveDataCache = false)
{
return await BaseDal.UpdateAsync(columns, where, isRemoveDataCache);
}
#endregion
#region
/// <summary>
/// 删除数据
/// </summary>
/// <param name="entity">实体类</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool Delete(T entity, bool isRemoveDataCache = false)
{
return BaseDal.Delete(entity, isRemoveDataCache);
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="entity">实体类</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteAsync(T entity, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteAsync(entity, isRemoveDataCache);
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="entity">实体类</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool Delete(IEnumerable<T> entity, bool isRemoveDataCache = false)
{
return BaseDal.Delete(entity, isRemoveDataCache);
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="entity">实体类</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteAsync(IEnumerable<T> entity, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteAsync(entity, isRemoveDataCache);
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="where">过滤条件</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool Delete(Expression<Func<T, bool>> where, bool isRemoveDataCache = false)
{
return BaseDal.Delete(where, isRemoveDataCache);
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="where">过滤条件</param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteAsync(Expression<Func<T, bool>> where, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteAsync(where, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID的数据
/// </summary>
/// <param name="id"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool DeleteById(object id, bool isRemoveDataCache = false)
{
return BaseDal.DeleteById(id, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID的数据
/// </summary>
/// <param name="id"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteByIdAsync(object id, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteByIdAsync(id, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool DeleteByIds(int[] ids, bool isRemoveDataCache = false)
{
return BaseDal.DeleteByIds(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteByIdsAsync(int[] ids, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteByIdsAsync(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool DeleteByIds(long[] ids, bool isRemoveDataCache = false)
{
return BaseDal.DeleteByIds(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteByIdsAsync(long[] ids, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteByIdsAsync(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool DeleteByIds(Guid[] ids, bool isRemoveDataCache = false)
{
return BaseDal.DeleteByIds(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteByIdsAsync(Guid[] ids, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteByIdsAsync(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool DeleteByIds(string[] ids, bool isRemoveDataCache = false)
{
return BaseDal.DeleteByIds(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteByIdsAsync(string[] ids, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteByIdsAsync(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool DeleteByIds(List<int> ids, bool isRemoveDataCache = false)
{
return BaseDal.DeleteByIds(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteByIdsAsync(List<int> ids, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteByIdsAsync(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool DeleteByIds(List<string> ids, bool isRemoveDataCache = false)
{
return BaseDal.DeleteByIds(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteByIdsAsync(List<string> ids, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteByIdsAsync(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool DeleteByIds(List<Guid> ids, bool isRemoveDataCache = false)
{
return BaseDal.DeleteByIds(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteByIdsAsync(List<Guid> ids, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteByIdsAsync(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public bool DeleteByIds(List<long> ids, bool isRemoveDataCache = false)
{
return BaseDal.DeleteByIds(ids, isRemoveDataCache);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids"></param>
/// <param name="isRemoveDataCache"></param>
/// <returns></returns>
public async Task<bool> DeleteByIdsAsync(List<long> ids, bool isRemoveDataCache = false)
{
return await BaseDal.DeleteByIdsAsync(ids, isRemoveDataCache);
}
#endregion
#region
/// <summary>
/// 判断数据是否存在
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <returns></returns>
public bool Exists(Expression<Func<T, bool>> predicate, bool blUseNoLock = false)
{
return BaseDal.Exists(predicate, blUseNoLock);
}
/// <summary>
/// 判断数据是否存在
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <returns></returns>
public async Task<bool> ExistsAsync(Expression<Func<T, bool>> predicate, bool blUseNoLock = false)
{
return await BaseDal.ExistsAsync(predicate, blUseNoLock);
}
#endregion
#region
/// <summary>
/// 获取数据总数
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public int GetCount(Expression<Func<T, bool>> predicate, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.GetCount(predicate, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 获取数据总数
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public async Task<int> GetCountAsync(Expression<Func<T, bool>> predicate, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.GetCountAsync(predicate, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 获取数据某个字段的合计
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="field">字段</param>
/// <param name="isDataCache">是否缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public int GetSum(Expression<Func<T, bool>> predicate, Expression<Func<T, int>> field, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.GetSum(predicate, field, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 获取数据某个字段的合计
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="field">字段</param>
/// <param name="isDataCache">是否缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public async Task<int> GetSumAsync(Expression<Func<T, bool>> predicate, Expression<Func<T, int>> field,
bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.GetSumAsync(predicate, field, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 获取数据某个字段的合计
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="field">字段</param>
/// <param name="isDataCache">是否缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public decimal GetSum(Expression<Func<T, bool>> predicate, Expression<Func<T, decimal>> field,
bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.GetSum(predicate, field, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 获取数据某个字段的合计
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="field">字段</param>
/// <param name="isDataCache">是否缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public async Task<decimal> GetSumAsync(Expression<Func<T, bool>> predicate, Expression<Func<T, decimal>> field,
bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.GetSumAsync(predicate, field, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 获取数据某个字段的合计
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="field">字段</param>
/// <param name="isDataCache">是否缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public float GetSum(Expression<Func<T, bool>> predicate, Expression<Func<T, float>> field,
bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.GetSum(predicate, field, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 获取数据某个字段的合计
/// </summary>
/// <param name="predicate">条件表达式树</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="field">字段</param>
/// <param name="isDataCache">是否缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public async Task<float> GetSumAsync(Expression<Func<T, bool>> predicate, Expression<Func<T, float>> field,
bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.GetSumAsync(predicate, field, blUseNoLock, isDataCache, cacheTimes);
}
#endregion
#region
/// <summary>
/// 根据条件查询分页数据
/// </summary>
/// <param name="predicate">判断集合</param>
/// <param name="orderByType">排序方式</param>
/// <param name="pageIndex">当前页面索引</param>
/// <param name="pageSize">分布大小</param>
/// <param name="orderByExpression"></param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public IPageList<T> QueryPage(Expression<Func<T, bool>> predicate,
Expression<Func<T, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
int pageSize = 20, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return BaseDal.QueryPage(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 根据条件查询分页数据
/// </summary>
/// <param name="predicate">判断集合</param>
/// <param name="orderByType">排序方式</param>
/// <param name="pageIndex">当前页面索引</param>
/// <param name="pageSize">分布大小</param>
/// <param name="orderByExpression"></param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public async Task<IPageList<T>> QueryPageAsync(Expression<Func<T, bool>> predicate,
Expression<Func<T, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
int pageSize = 20, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock, isDataCache, cacheTimes);
}
#endregion
#region
/// <summary>
/// 查询-多表查询
/// </summary>
/// <typeparam name="T1">实体1</typeparam>
/// <typeparam name="T2">实体2</typeparam>
/// <typeparam name="TResult">返回对象</typeparam>
/// <param name="joinExpression">关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo}</param>
/// <param name="selectExpression">返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo}</param>
/// <param name="whereLambda">查询表达式 (w1, w2) =>w1.UserNo == "")</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>值</returns>
public List<TResult> QueryMuch<T1, T2, TResult>(
Expression<Func<T1, T2, object[]>> joinExpression,
Expression<Func<T1, T2, TResult>> selectExpression,
Expression<Func<T1, T2, bool>> whereLambda = null, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue) where T1 : class, new()
{
return BaseDal.QueryMuch(joinExpression, selectExpression, whereLambda, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 查询-多表查询
/// </summary>
/// <typeparam name="T1">实体1</typeparam>
/// <typeparam name="T2">实体2</typeparam>
/// <typeparam name="TResult">返回对象</typeparam>
/// <param name="joinExpression">关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo}</param>
/// <param name="selectExpression">返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo}</param>
/// <param name="whereLambda">查询表达式 (w1, w2) =>w1.UserNo == "")</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>值</returns>
public async Task<List<TResult>> QueryMuchAsync<T1, T2, TResult>(
Expression<Func<T1, T2, object[]>> joinExpression,
Expression<Func<T1, T2, TResult>> selectExpression,
Expression<Func<T1, T2, bool>> whereLambda = null, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue) where T1 : class, new()
{
return await BaseDal.QueryMuchAsync(joinExpression, selectExpression, whereLambda, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 查询-多表查询
/// </summary>
/// <typeparam name="T1">实体1</typeparam>
/// <typeparam name="T2">实体2</typeparam>
/// <typeparam name="TResult">返回对象</typeparam>
/// <param name="joinExpression">关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo}</param>
/// <param name="selectExpression">返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo}</param>
/// <param name="whereLambda">查询表达式 (w1, w2) =>w1.UserNo == "")</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>值</returns>
public TResult QueryMuchFirst<T1, T2, TResult>(
Expression<Func<T1, T2, object[]>> joinExpression,
Expression<Func<T1, T2, TResult>> selectExpression,
Expression<Func<T1, T2, bool>> whereLambda = null, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue) where T1 : class, new()
{
return BaseDal.QueryMuchFirst(joinExpression, selectExpression, whereLambda, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 查询-多表查询
/// </summary>
/// <typeparam name="T1">实体1</typeparam>
/// <typeparam name="T2">实体2</typeparam>
/// <typeparam name="TResult">返回对象</typeparam>
/// <param name="joinExpression">关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo}</param>
/// <param name="selectExpression">返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo}</param>
/// <param name="whereLambda">查询表达式 (w1, w2) =>w1.UserNo == "")</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>值</returns>
public async Task<TResult> QueryMuchFirstAsync<T1, T2, TResult>(
Expression<Func<T1, T2, object[]>> joinExpression,
Expression<Func<T1, T2, TResult>> selectExpression,
Expression<Func<T1, T2, bool>> whereLambda = null, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue) where T1 : class, new()
{
return await BaseDal.QueryMuchFirstAsync(joinExpression, selectExpression, whereLambda, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 查询-三表查询
/// </summary>
/// <typeparam name="T">实体1</typeparam>
/// <typeparam name="T2">实体2</typeparam>
/// <typeparam name="T3">实体3</typeparam>
/// <typeparam name="TResult">返回对象</typeparam>
/// <param name="joinExpression">关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo}</param>
/// <param name="selectExpression">返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo}</param>
/// <param name="whereLambda">查询表达式 (w1, w2) =>w1.UserNo == "")</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>值</returns>
public List<TResult> QueryMuch<T1, T2, T3, TResult>(
Expression<Func<T1, T2, T3, object[]>> joinExpression,
Expression<Func<T1, T2, T3, TResult>> selectExpression,
Expression<Func<T1, T2, T3, bool>> whereLambda = null, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue) where T1 : class, new()
{
return BaseDal.QueryMuch(joinExpression, selectExpression, whereLambda, blUseNoLock, isDataCache, cacheTimes);
}
/// <summary>
/// 查询-三表查询
/// </summary>
/// <typeparam name="T">实体1</typeparam>
/// <typeparam name="T2">实体2</typeparam>
/// <typeparam name="T3">实体3</typeparam>
/// <typeparam name="TResult">返回对象</typeparam>
/// <param name="joinExpression">关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo}</param>
/// <param name="selectExpression">返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo}</param>
/// <param name="whereLambda">查询表达式 (w1, w2) =>w1.UserNo == "")</param>
/// <param name="blUseNoLock">是否使用WITH(NoLock)</param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns>值</returns>
public async Task<List<TResult>> QueryMuchAsync<T1, T2, T3, TResult>(
Expression<Func<T1, T2, T3, object[]>> joinExpression,
Expression<Func<T1, T2, T3, TResult>> selectExpression,
Expression<Func<T1, T2, T3, bool>> whereLambda = null, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue) where T1 : class, new()
{
return await BaseDal.QueryMuchAsync(joinExpression, selectExpression, whereLambda, blUseNoLock, isDataCache, cacheTimes);
}
#endregion
#region SQL查询
/// <summary>
/// 执行sql语句并返回List<T />
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public List<T> SqlQuery(string sql, List<SugarParameter> parameters)
{
return BaseDal.SqlQuery(sql, parameters);
}
/// <summary>
/// 执行sql语句并返回List<T />
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="isDataCache">是否启用缓存</param>
/// <param name="cacheTimes">缓存时长(分钟)</param>
/// <returns></returns>
public async Task<List<T>> SqlQueryable(string sql, bool isDataCache = false, int cacheTimes = int.MaxValue)
{
return await BaseDal.SqlQueryable(sql, isDataCache, cacheTimes);
}
/// <summary>
/// 执行调用存储过程返回DataTable
/// </summary>
/// <param name="useStoredProcedureName">存储过程名称</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public async Task<DataTable> SqlQueryDataTableByStoredProcedure(string useStoredProcedureName, List<SugarParameter> parameters)
{
var list = await BaseDal.SqlQueryDataTableByStoredProcedure(useStoredProcedureName, parameters);//返回DataTable
return list;
}
/// <summary>
/// 执行调用存储过程返回List<T>
/// </summary>
/// <typeparam name="T">返回类型</typeparam>
/// <param name="useStoredProcedureName">存储过程名称</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public async Task<List<T>> SqlQueryableByStoredProcedure(string useStoredProcedureName, List<SugarParameter> parameters)
{
var list = await BaseDal.SqlQueryableByStoredProcedure(useStoredProcedureName, parameters);//返回List
return list;
}
#endregion
}
}