public class BaseDal where T : class ,new()
{#region 属性字段
privateDbContext _context;publicDbContext Context
{get { return_context; }set { _context =value; }
}privateSqlSugarClient _db;/// 
///数据处理对象 by beck.huang 2018-05-09 09:31:24/// 
internalSqlSugarClient Db
{get { return_db; }private set { _db =value; }
}private SimpleClient_entityDB;/// 
///实体数据处理对象 by beck.huang 2018-05-09 09:31:15/// 
internal SimpleClientEntityDB
{get { return_entityDB; }private set { _entityDB =value; }
}public Action OnDalError { get; set; }public Action OnDalLogExecuting { get; set; }public Action OnDalLogExecuted { get; set; }public Func> OnDalExecutingChangeSql { get; set; }#endregion
#region 构造函数
/// 
///功能描述:构造函数///作  者:beck.huang///创建日期:2018-05-09 09:30:54///任务编号:中餐/// 
/// 是否自动关闭连接
public BaseDal(bool blnIsAutoCloseConnection = true)
{
DbContext context=DbContext.GetDbContext(blnIsAutoCloseConnection);
_context=context;
_db=context.Db;//_db.Aop.OnLogExecuted = new Action(OnLogExecuted);//_db.Aop.OnLogExecuting = OnDalLogExecuting;//_db.Aop.OnError = OnDalError;//_db.Aop.OnExecutingChangeSql = new Func>(OnExecutingChangeSql);
_entityDB = context.GetEntityDB(_db);
}/// 
///功能描述:使用指定的DbContext初始化一个对象///作  者:beck.huang///创建日期:2018-05-28 17:31:57///任务编号:中餐/// 
/// DbContext
publicBaseDal(DbContext context)
{
_context=context;
_db=context.Db;
_entityDB= context.GetEntityDB(_db);
}#endregion
#region 增
/// 
///功能描述:插入数据///作  者:beck.huang///创建日期:2018-05-16 17:57:26///任务编号:中餐/// 
/// strSql
/// parameters
/// 是否成功
public bool Insert(string strSql, SugarParameter[] parameters = null)
{return _db.Ado.ExecuteCommand(strSql, parameters) > 0;
}/// 
///功能描述:插入数据///作  者:beck.huang///创建日期:2018-05-09 09:43:06///任务编号:中餐/// 
/// 实体列表
/// 是否成功
public bool Insert(paramsT[] entitys)
{if (entitys != null && entitys.Length > 0)
{return_entityDB.InsertRange(entitys);
}return true;
}/// 
///功能描述:插入数据,返回自增列///作  者:beck.huang///创建日期:2018-05-09 09:44:52///任务编号:中餐/// 
/// 实体
/// 自增ID
public intInsertReturnIdentity(T entity)
{return_entityDB.InsertReturnIdentity(entity);
}#endregion
#region 删
/// 
///功能描述:删除指定实体///作  者:beck.huang///创建日期:2018-05-09 09:47:38///任务编号:中餐/// 
/// 实体(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 是否成功
public boolDelete(T entity)
{return_entityDB.Delete(entity);
}/// 
///功能描述:删除数据///作  者:beck.huang///创建日期:2018-05-09 10:06:10///任务编号:中餐/// 
/// 实体列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 受影响行数
public intDelete(T[] entitys)
{if (entitys != null)return _db.Deleteable(entitys.ToList()).ExecuteCommand();else
return 0;
}/// 
///功能描述:删除数据///作  者:beck.huang///创建日期:2018-05-09 09:52:35///任务编号:中餐/// 
/// 条件表达式
/// 是否成功
public bool Delete(Expression>whereExpression)
{return_entityDB.Delete(whereExpression);
}/// 
///功能描述:删除数据///作  者:beck.huang///创建日期:2018-05-09 10:02:37///任务编号:中餐/// 
/// 条件
/// 是否成功
public bool Delete(stringstrWhere)
{return _db.Deleteable().Where(strWhere).ExecuteCommand() > 0;
}/// 
///功能描述:删除数据///作  者:beck.huang///创建日期:2018-05-09 10:02:37///任务编号:中餐/// 
/// 条件
/// 参数
/// 是否成功
public bool Delete(string strWhere, ListlstParameters)
{return _db.Deleteable().Where(strWhere, lstParameters).ExecuteCommand() > 0;
}/// 
///功能描述:根据ID删除///作  者:beck.huang///创建日期:2018-05-09 10:08:18///任务编号:中餐/// 
/// 主键列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 受影响行数
public int DeleteByID(params object[] ids)
{return _db.Deleteable().In(ids).ExecuteCommand();
}#endregion
#region 改
/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-16 17:57:26///任务编号:中餐/// 
/// strSql
/// parameters
/// 是否成功
public bool Update(string strSql, SugarParameter[] parameters = null)
{return _db.Ado.ExecuteCommand(strSql, parameters) > 0;
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-09 10:28:27///任务编号:中餐/// 
/// 实体(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 是否成功
public boolUpdate(T entity)
{return_entityDB.Update(entity);
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-09 10:28:27///任务编号:中餐/// 
/// 实体
/// 条件
/// 是否成功
public bool Update(T entity, stringstrWhere)
{return _db.Updateable(entity).Where(strWhere).ExecuteCommand() > 0;
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-09 10:28:27///任务编号:中餐/// 
/// 实体
/// 条件
/// 参数
/// 是否成功
public boolUpdate(
T entity,stringstrWhere,
ListlstParameters)
{return _db.Updateable(entity).Where(strWhere, lstParameters).ExecuteCommand() > 0;
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-09 10:31:15///任务编号:中餐/// 
/// 实体列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 受影响行数
public intUpdate(T[] entitys)
{return Update(entitys, null, null);
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-16 15:31:09///任务编号:中餐/// 
/// 实体列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 不更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 受影响行数
public intUpdate(
T[] entitys,
ListlstColumns,
ListlstIgnoreColumns)
{return Update(entitys, lstColumns, lstIgnoreColumns, "");
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-16 15:31:47///任务编号:中餐/// 
/// 实体列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 不更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 条件
/// 受影响行数
public intUpdate(
T[] entitys,
ListlstColumns,
ListlstIgnoreColumns,stringstrWhere)
{return Update(entitys, lstColumns, lstIgnoreColumns, strWhere, null);
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-16 15:33:06///任务编号:中餐/// 
/// 实体列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 不更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 条件
/// 条件参数
/// 受影响行数
public intUpdate(
T[] entitys,
ListlstColumns,
ListlstIgnoreColumns,stringstrWhere,
ListlstParameters)
{
IUpdateable up =_db.Updateable(entitys);if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
{
up= up.IgnoreColumns(it =>lstIgnoreColumns.Contains(it));
}if (lstColumns != null && lstColumns.Count > 0)
{
up= up.UpdateColumns(it =>lstColumns.Contains(it));
}if (!string.IsNullOrEmpty(strWhere))
{
up=up.Where(strWhere, lstParameters);
}returnup.ExecuteCommand();
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-16 15:33:36///任务编号:中餐/// 
/// 实体列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 不更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 条件
/// 受影响行数
public intUpdate(
T[] entitys,
ListlstColumns,
ListlstIgnoreColumns,
Expression>whereExpression)
{
IUpdateable up =_db.Updateable(entitys);if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
{
up= up.IgnoreColumns(it =>lstIgnoreColumns.Contains(it));
}if (lstColumns != null && lstColumns.Count > 0)
{
up= up.UpdateColumns(it =>lstColumns.Contains(it));
}if (whereExpression != null)
{
up=up.Where(whereExpression);
}returnup.ExecuteCommand();
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-09 10:40:18///任务编号:中餐/// 
/// 修改的列
/// 条件表达式
/// 是否成功
public bool Update(Expression> columns, Expression>whereExpression)
{return_entityDB.Update(columns, whereExpression);
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-09 10:43:35///任务编号:中餐/// 
/// 实体(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 不更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 是否成功
public boolUpdate(
T entity,
ListlstColumns,
ListlstIgnoreColumns)
{return Update(entity, lstColumns, lstIgnoreColumns, string.Empty);
}/// 
///功能描述:修改指定的列和值///作  者:beck.huang///创建日期:2018-05-16 19:33:46///任务编号:中餐/// 
/// 条件
/// 列和值列表(如:it => it.Name == (it.Name + 1))
/// 是否成功
public bool Update(string strWhere, params Expression>[] lstSetValueExpression)
{return Update(strWhere, null, lstSetValueExpression);
}/// 
///功能描述:修改指定的列和值///作  者:beck.huang///创建日期:2018-05-16 19:34:01///任务编号:中餐/// 
/// 条件
/// 参数
/// 列和值列表(如:it => it.Name == (it.Name + 1))
/// 是否成功
public boolUpdate(stringstrWhere,
ListlstParameters,params Expression>[] lstSetValueExpression
)
{
IUpdateable up = _db.Updateable();if (lstSetValueExpression != null)
{foreach (var item inlstSetValueExpression)
{
up=up.ReSetValue(item);
}
}if (!string.IsNullOrEmpty(strWhere))
{
up=up.Where(strWhere, lstParameters);
}return up.ExecuteCommand() > 0;
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-09 10:43:35///任务编号:中餐/// 
/// 实体
/// 更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 不更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 条件
/// 是否成功
public boolUpdate(
T entity,
ListlstColumns,
ListlstIgnoreColumns,stringstrWhere)
{
IUpdateable up =_db.Updateable(entity);if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
{
up= up.IgnoreColumns(it =>lstIgnoreColumns.Contains(it));
}if (lstColumns != null && lstColumns.Count > 0)
{
up= up.UpdateColumns(it =>lstColumns.Contains(it));
}if (!string.IsNullOrEmpty(strWhere))
{
up=up.Where(strWhere);
}return up.ExecuteCommand() > 0;
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-09 10:43:35///任务编号:中餐/// 
/// 实体
/// 更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 不更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 条件
/// 参数
/// 是否成功
public boolUpdate(
T entity,
ListlstColumns,
ListlstIgnoreColumns,stringstrWhere,
ListlstParameters)
{
IUpdateable up =_db.Updateable(entity);if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
{
up= up.IgnoreColumns(it =>lstIgnoreColumns.Contains(it));
}if (lstColumns != null && lstColumns.Count > 0)
{
up= up.UpdateColumns(it =>lstColumns.Contains(it));
}if (!string.IsNullOrEmpty(strWhere))
{
up=up.Where(strWhere, lstParameters);
}return up.ExecuteCommand() > 0;
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-15 10:10:53///任务编号:中餐/// 
/// entity
/// 更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 不更新的列,如果为空则不做限制(lstColumns与lstIgnoreColumns互斥)
/// 条件表达式
/// 是否成功
public boolUpdate(
T entity,
ListlstColumns,
ListlstIgnoreColumns,
Expression>whereExpression)
{
IUpdateable up =_db.Updateable(entity);if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
{
up= up.IgnoreColumns(it =>lstIgnoreColumns.Contains(it));
}if (lstColumns != null && lstColumns.Count > 0)
{
up= up.UpdateColumns(it =>lstColumns.Contains(it));
}if (whereExpression != null)
{
up=up.Where(whereExpression);
}return up.ExecuteCommand() > 0;
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-14 15:40:53///任务编号:中餐/// 
/// 列,值
/// 条件
/// 参数
/// 是否成功
public boolUpdate(
DictionarylstColumnValues,stringstrWhere,
ListlstParameters)
{
IUpdateable up = _db.Updateable(lstColumnValues);if (!string.IsNullOrEmpty(strWhere))
{
up=up.Where(strWhere, lstParameters);
}return up.ExecuteCommand() > 0;
}/// 
///功能描述:修改数据///作  者:beck.huang///创建日期:2018-05-14 15:42:27///任务编号:中餐/// 
/// 列,值
/// 条件
/// 是否成功
public bool Update(Dictionary lstColumnValues, Expression>whereExpression)
{
IUpdateable up = _db.Updateable(lstColumnValues);if (whereExpression != null)
{
up=up.Where(whereExpression);
}return up.ExecuteCommand() > 0;
}#endregion
#region 查
/// 
///功能描述:数据条数///作  者:beck.huang///创建日期:2018-05-25 18:07:00///任务编号:中餐/// 
/// strWhere
/// 返回值
public int SelectCount(stringstrWhere)
{return _db.Queryable()
.WhereIF(!string.IsNullOrEmpty(strWhere), strWhere)
.Count();
}/// 
///功能描述:查询所有数据///作  者:beck.huang///创建日期:2018-05-09 14:02:34///任务编号:中餐/// 
/// 数据列表
public ListQuery()
{return_entityDB.GetList();
}/// 
///功能描述:查询数据列表///作  者:beck.huang///创建日期:2018-05-10 10:39:11///任务编号:中餐/// 
/// 条件
/// 数据列表
public List Query(stringstrWhere)
{return _db.Queryable().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList();
}/// 
///功能描述:查询数据列表///作  者:beck.huang///创建日期:2018-05-10 10:40:32///任务编号:中餐/// 
/// whereExpression
/// 数据列表
public List Query(Expression>whereExpression)
{return_entityDB.GetList(whereExpression);
}/// 
///功能描述:查询一个列表///作  者:beck.huang///创建日期:2018-05-09 11:13:55///任务编号:中餐/// 
/// 条件表达式
/// 排序字段,如name asc,age desc
/// 数据列表
public List Query(Expression> whereExpression, stringstrOrderByFileds)
{return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToList();
}/// 
///功能描述:查询一个列表///作  者:beck.huang///创建日期:2018-05-09 11:14:54///任务编号:中餐/// 
/// 条件
/// 排序字段,如name asc,age desc
/// 数据列表
public List Query(string strWhere, stringstrOrderByFileds)
{return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList();
}/// 
///功能描述:查询一个列表///作  者:beck.huang///创建日期:2018-05-09 11:14:54///任务编号:中餐/// 
/// 条件
/// 参数
/// 排序字段,如name asc,age desc
/// 数据列表
public ListQuery(stringstrWhere,
ListlstParameters,stringstrOrderByFileds)
{return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere, lstParameters).ToList();
}/// 
///功能描述:查询前N条数据///作  者:beck.huang///创建日期:2018-05-09 11:16:09///任务编号:中餐/// 
/// 条件表达式
/// 前N条
/// 排序字段,如name asc,age desc
/// 数据列表
public ListQuery(
Expression>whereExpression,intintTop,stringstrOrderByFileds)
{return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList();
}/// 
///功能描述:查询前N条数据///作  者:beck.huang///创建日期:2018-05-09 11:17:14///任务编号:中餐/// 
/// 条件
/// 前N条
/// 排序字段,如name asc,age desc
/// 数据列表
public ListQuery(stringstrWhere,intintTop,stringstrOrderByFileds)
{return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList();
}/// 
///功能描述:查询前N条数据///作  者:beck.huang///创建日期:2018-05-09 11:17:14///任务编号:中餐/// 
/// 条件
/// 参数
/// 前N条
/// 排序字段,如name asc,age desc
/// 数据列表
public ListQuery(stringstrWhere,
ListlstParameters,intintTop,stringstrOrderByFileds)
{return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere, lstParameters).Take(intTop).ToList();
}/// 
///功能描述:分页查询///作  者:beck.huang///创建日期:2018-05-09 11:27:17///任务编号:中餐/// 
/// 条件表达式
/// 页码(下标0)
/// 页大小
/// 数据总量
/// 排序字段,如name asc,age desc
/// 数据列表
public ListQuery(
Expression>whereExpression,intintPageIndex,intintPageSize,ref intintTotalCount,stringstrOrderByFileds)
{return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize, refintTotalCount);
}/// 
///功能描述:分页查询///作  者:beck.huang///创建日期:2018-05-09 11:29:07///任务编号:中餐/// 
/// 条件
/// 页码(下标0)
/// 页大小
/// 数据总量
/// 排序字段,如name asc,age desc
/// 数据列表
public ListQuery(stringstrWhere,intintPageIndex,intintPageSize,ref intintTotalCount,stringstrOrderByFileds)
{return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize, refintTotalCount);
}/// 
///功能描述:分页查询///作  者:beck.huang///创建日期:2018-05-09 11:29:07///任务编号:中餐/// 
/// 条件
/// 参数
/// 页码(下标0)
/// 页大小
/// 数据总量
/// 排序字段,如name asc,age desc
/// 数据列表
public ListQuery(stringstrWhere,
ListlstParameters,intintPageIndex,intintPageSize,ref intintTotalCount,stringstrOrderByFileds)
{return _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere, lstParameters).ToPageList(intPageIndex, intPageSize, refintTotalCount);
}/// 
///功能描述:根据ID查询一条数据///作  者:beck.huang///创建日期:2018-05-09 11:23:21///任务编号:中餐/// 
/// id(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 数据实体
public T QueryByID(objectobjId)
{return _db.Queryable().InSingle(objId);
}/// 
///功能描述:根据ID查询一条数据///作  者:beck.huang///创建日期:2018-05-14 16:58:09///任务编号:中餐/// 
/// id(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 是否使用缓存
/// 缓存超时时间(秒)
/// 数据实体
publicT QueryByID(objectobjId,bool blnUseCache = false,int cacheDurationInSeconds = 2147483647)
{return _db.Queryable().WithCacheIF(blnUseCache).InSingle(objId);
}/// 
///功能描述:根据ID查询数据///作  者:beck.huang///创建日期:2018-05-09 11:23:34///任务编号:中餐/// 
/// id列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 数据实体列表
public List QueryByIDs(object[] lstIds)
{return _db.Queryable().In(lstIds).ToList();
}/// 
///功能描述:根据ID查询一条数据///作  者:beck.huang///创建日期:2018-05-14 16:58:47///任务编号:中餐/// 
/// id列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件
/// 是否使用缓存
/// 缓存超时时间(秒)
/// 数据实体列表
public ListQueryByIDs(object[] lstIds,bool blnUseCache = false,int cacheDurationInSeconds = 2147483647)
{return _db.Queryable().WithCacheIF(blnUseCache).In(lstIds).ToList();
}#region QueryEntity
/// 
///功能描述:查询一个实体///作  者:beck.huang///创建日期:2018-05-10 10:45:37///任务编号:中餐/// 
/// 条件表达式
/// 是否使用缓存机制
/// 缓存过期时长
/// 实体
publicT QueryEntity(
Expression>whereExpression,bool blnUseCache = false,int cacheDurationInSeconds = 2147483647)
{return _db.Queryable().WithCacheIF(blnUseCache, cacheDurationInSeconds).WhereIF(whereExpression != null, whereExpression).First();
}/// 
///功能描述:查询一个实体///作  者:beck.huang///创建日期:2018-05-10 10:45:44///任务编号:中餐/// 
/// 条件
/// 参数
/// 是否使用缓存机制
/// 缓存过期时长
/// 实体
publicT QueryEntity(stringstrWhere,
List lstParameters = null,bool blnUseCache = false,int cacheDurationInSeconds = 2147483647)
{return _db.Queryable().WithCacheIF(blnUseCache, cacheDurationInSeconds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere, lstParameters).First();
}#endregion
#region QueryList
/// 
///功能描述:查询一个列表///作  者:beck.huang///创建日期:2018-05-10 10:47:14///任务编号:中餐/// 
/// 是否使用缓存机制
/// 缓存过期时长
/// 返回值
public List QueryList(bool blnUseCache = false, int cacheDurationInSeconds = 2147483647)
{return _db.Queryable().WithCacheIF(blnUseCache, cacheDurationInSeconds).ToList();
}/// 
///功能描述:查询一个列表///作  者:beck.huang///创建日期:2018-05-10 10:50:32///任务编号:中餐/// 
/// 条件表达式
/// 前N条数据
/// 排序字段,如name asc,age desc
/// 是否使用缓存机制
/// 缓存过期时长
/// 数据列表
public ListQueryList(
Expression>whereExpression,int? intTop = null,string strOrderByFileds = null,bool blnUseCache = false,int cacheDurationInSeconds = 2147483647)
{
ISugarQueryable q = _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression);if(intTop.HasValue)
{
q=q.Take(intTop.Value);
}returnq.WithCacheIF(blnUseCache, cacheDurationInSeconds).ToList();
}/// 
///功能描述:查询一个列表///作  者:beck.huang///创建日期:2018-05-10 10:52:17///任务编号:中餐/// 
/// 条件
/// 参数
/// 前N条数据
/// 排序字段,如name asc,age desc
/// 是否使用缓存机制
/// 缓存过期时长
/// 数据列表
public ListQueryList(stringstrWhere,
List lstParameters = null,int? intTop = null,string strOrderByFileds = null,bool blnUseCache = false,int cacheDurationInSeconds = 2147483647)
{
ISugarQueryable q = _db.Queryable().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere, lstParameters);if(intTop.HasValue)
{
q=q.Take(intTop.Value);
}returnq.WithCacheIF(blnUseCache, cacheDurationInSeconds).ToList();
}#endregion
#region QueryPage
/// 
///功能描述:分页查询///作  者:beck.huang///创建日期:2018-05-10 10:55:06///任务编号:中餐/// 
/// 条件
/// 数据总数
/// 当前页
/// 页大小
/// 参数
/// 排序字段,如name asc,age desc
/// 数据列表
public ListQueryPage(stringstrWhere,ref intintTotalCount,int intPageIndex = 0,int intPageSize = 20,
List lstParameters = null,string strOrderByFileds = null)
{return _db.Queryable()
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(!string.IsNullOrEmpty(strWhere), strWhere, lstParameters)
.ToPageList(intPageIndex, intPageSize,refintTotalCount);
}/// 
///功能描述:分页查询///作  者:beck.huang///创建日期:2018-05-10 10:55:06///任务编号:中餐/// 
/// 条件
/// 数据总数
/// 当前页
/// 页大小
/// 参数
/// 排序字段,如name asc,age desc
/// 数据列表
public ListQueryPage(
Expression>whereExpression,ref intintTotalCount,int intPageIndex = 0,int intPageSize = 20,string strOrderByFileds = null)
{return _db.Queryable()
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression!= null, whereExpression)
.ToPageList(intPageIndex, intPageSize,refintTotalCount);
}#endregion
/// 
///功能描述:查询Table///作  者:beck.huang///创建日期:2018-05-16 18:03:14///任务编号:中餐/// 
/// strSql
/// 参数
/// DataTable
public DataTable QueryTable(string strSql, SugarParameter[] lstParameters = null)
{return_db.Ado.GetDataTable(strSql, lstParameters);
}/// 
///功能描述:查询DataSet///作  者:beck.huang///创建日期:2018-05-16 18:06:05///任务编号:中餐/// 
/// strSql
/// 参数
/// DataSet
public DataSet QueryDataSet(string strSql, SugarParameter[] lstParameters = null)
{return_db.Ado.GetDataSetAll(strSql, lstParameters);
}#endregion
#region 事务
/// 
///功能描述:开始事务///作  者:beck.huang///创建日期:2018-05-09 09:49:49///任务编号:中餐/// 
public voidBeginTran()
{
_db.Ado.BeginTran();
}/// 
///功能描述:提交事务///作  者:beck.huang///创建日期:2018-05-09 09:49:57///任务编号:中餐/// 
public voidCommitTran()
{
_db.Ado.CommitTran();
}/// 
///功能描述:回滚事务///作  者:beck.huang///创建日期:2018-05-09 09:50:01///任务编号:中餐/// 
public voidRollbackTran()
{
_db.Ado.RollbackTran();
}#endregion
#region 其他
/// 
///功能描述:获取数据库时间///作  者:beck.huang///创建日期:2018-05-09 19:41:31///任务编号:中餐/// 
/// 返回值
publicDateTime GetDBTime()
{return_db.GetDate();
}/// 
///功能描述:清除表缓存///作  者:beck.huang///创建日期:2018-05-11 10:15:51///任务编号:中餐/// 
public voidRemoveCache()
{var cacheService =_db.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService;string tableName = _db.EntityMaintenance.GetTableName();var keys = cacheService.GetAllKey();if (keys != null && keys.Count() > 0)
{foreach (var item inkeys)
{if (item.ToLower().Contains("." + tableName.ToLower() + "."))
{
cacheService.Remove(item);
}
}
}
}/// 
///功能描述:关闭连接///作  者:beck.huang///创建日期:2018-05-28 17:37:16///任务编号:中餐/// 
public voidCloseDB()
{if (_context != null && _context.Db != null)
{
_context.Db.Close();
_context.Db.Dispose();
}
}#endregion
#region 事件
/
/ 功能描述:Sql执行完发生/ 作  者:beck.huang/ 创建日期:2018-05-11 10:40:25/ 任务编号:中餐/
/sql
/pars
//public virtual void OnLogExecuted(string sql, SugarParameter[] pars)//{//}
/
/ 功能描述:Sql执行前发生/ 作  者:beck.huang/ 创建日期:2018-05-11 10:40:25/ 任务编号:中餐/
/sql
/pars
//public virtual void OnLogExecuting(string sql, SugarParameter[] pars)//{//}
/
/ 功能描述:执行SQL 错误时发生/ 作  者:beck.huang/ 创建日期:2018-05-11 10:40:25/ 任务编号:中餐/
/错误
//public virtual void OnError(Exception ex)//{//}
/
/ 功能描述:SQL执行前 可以修改SQL/ 作  者:beck.huang/ 创建日期:2018-05-11 10:47:37/ 任务编号:中餐/
/sql
/pars
/返回值
//public virtual KeyValuePair OnExecutingChangeSql(string sql, SugarParameter[] pars)//{//return new KeyValuePair(sql, pars);//}
#endregion}