首先简单封装了个DbContext

  public class DbContext
{
#region 属性字段
private static string _connectionString; /// <summary>
/// 连接字符串 by beck.huang 2018-05-08 09:56:05
/// </summary>
public static string ConnectionString
{
get { return _connectionString; }
set { _connectionString = value; }
} private static DbType _dbType; /// <summary>
/// 数据库类型 by beck.huang 2018-05-08 09:58:03
/// </summary>
public static DbType DbType
{
get { return _dbType; }
set { _dbType = value; }
} private SqlSugarClient _db; /// <summary>
/// 数据连接对象 by beck.huang 2018-05-08 10:00:14
/// </summary>
public SqlSugarClient Db
{
get { return _db; }
private set { _db = value; }
} /// <summary>
/// 数据库上下文实例(自动关闭连接) by beck.huang 2018-05-08 09:47:30
/// </summary>
public static DbContext Context
{
get
{
return new DbContext();
} }
#endregion #region 构造函数 /// <summary>
/// 功能描述:构造函数
/// 作  者:beck.huang
/// 创建日期:2018-05-08 09:47:24
/// 任务编号:中餐
/// </summary>
private DbContext()
{
if (string.IsNullOrEmpty(_connectionString))
throw new ArgumentNullException("数据库连接字符串为空");
_db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = _connectionString,
DbType = _dbType,
IsAutoCloseConnection = true,
IsShardSameThread = true,
ConfigureExternalServices = new ConfigureExternalServices()
{
DataInfoCacheService = new HttpRuntimeCache()
},
MoreSettings = new ConnMoreSettings()
{
//IsWithNoLockQuery = true,
IsAutoRemoveDataCache = true
}
});
} /// <summary>
/// 功能描述:构造函数
/// 作  者:beck.huang
/// 创建日期:2018-05-28 17:23:19
/// 任务编号:中餐
/// </summary>
/// <param name="blnIsAutoCloseConnection">是否自动关闭连接</param>
private DbContext(bool blnIsAutoCloseConnection)
{
if (string.IsNullOrEmpty(_connectionString))
throw new ArgumentNullException("数据库连接字符串为空");
_db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = _connectionString,
DbType = _dbType,
IsAutoCloseConnection = blnIsAutoCloseConnection,
IsShardSameThread = true,
ConfigureExternalServices = new ConfigureExternalServices()
{
DataInfoCacheService = new HttpRuntimeCache()
},
MoreSettings = new ConnMoreSettings()
{
//IsWithNoLockQuery = true,
IsAutoRemoveDataCache = true
}
});
}
#endregion #region 实例方法
/// <summary>
/// 功能描述:获取数据库处理对象
/// 作  者:beck.huang
/// 创建日期:2018-05-08 09:46:06
/// 任务编号:中餐
/// </summary>
/// <returns>返回值</returns>
public SimpleClient<T> GetEntityDB<T>() where T : class,new()
{
return new SimpleClient<T>(_db);
}
/// <summary>
/// 功能描述:获取数据库处理对象
/// 作  者:beck.huang
/// 创建日期:2018-05-09 09:17:43
/// 任务编号:中餐
/// </summary>
/// <param name="db">db</param>
/// <returns>返回值</returns>
public SimpleClient<T> GetEntityDB<T>(SqlSugarClient db) where T : class,new()
{
return new SimpleClient<T>(db);
} #region 根据数据库表生产实体类
/// <summary>
/// 功能描述:根据数据库表生产实体类
/// 作  者:beck.huang
/// 创建日期:2018-05-08 10:14:37
/// 任务编号:中餐
/// </summary>
/// <param name="strPath">实体类存放路径</param>
public void CreateClassFileByDBTalbe(string strPath)
{
CreateClassFileByDBTalbe(strPath, "Km.PosZC");
}
/// <summary>
/// 功能描述:根据数据库表生产实体类
/// 作  者:beck.huang
/// 创建日期:2018-05-08 10:10:59
/// 任务编号:中餐
/// </summary>
/// <param name="strPath">实体类存放路径</param>
/// <param name="strNameSpace">命名空间</param>
public void CreateClassFileByDBTalbe(string strPath, string strNameSpace)
{
CreateClassFileByDBTalbe(strPath, strNameSpace, null);
} /// <summary>
/// 功能描述:根据数据库表生产实体类
/// 作  者:beck.huang
/// 创建日期:2018-05-08 10:18:18
/// 任务编号:中餐
/// </summary>
/// <param name="strPath">实体类存放路径</param>
/// <param name="strNameSpace">命名空间</param>
/// <param name="lstTableNames">生产指定的表</param>
public void CreateClassFileByDBTalbe(
string strPath,
string strNameSpace,
string[] lstTableNames)
{
CreateClassFileByDBTalbe(strPath, strNameSpace, lstTableNames, string.Empty);
} /// <summary>
/// 功能描述:根据数据库表生产实体类
/// 作  者:beck.huang
/// 创建日期:2018-05-09 15:38:22
/// 任务编号:中餐
/// </summary>
/// <param name="strPath">实体类存放路径</param>
/// <param name="strNameSpace">命名空间</param>
/// <param name="lstTableNames">生产指定的表</param>
/// <param name="strInterface">实现接口</param>
public void CreateClassFileByDBTalbe(
string strPath,
string strNameSpace,
string[] lstTableNames,
string strInterface,
bool blnSerializable = false)
{
if (lstTableNames != null && lstTableNames.Length > )
{
_db.DbFirst.Where(lstTableNames).IsCreateDefaultValue().IsCreateAttribute()
.SettingClassTemplate(p => p = @"
{using} namespace {Namespace}
{
{ClassDescription}{SugarTable}" + (blnSerializable ? "[Serializable]" : "") + @"
public partial class {ClassName}" + (string.IsNullOrEmpty(strInterface) ? "" : (" : " + strInterface)) + @"
{
public {ClassName}()
{
{Constructor}
}
{PropertyName}
}
}
")
.SettingPropertyTemplate(p => p = @"
{SugarColumn}
public {PropertyType} {PropertyName}
{
get
{
return _{PropertyName};
}
set
{
if(_{PropertyName}!=value)
{
base.SetValueCall(" + "\"{PropertyName}\",_{PropertyName}" + @");
}
_{PropertyName}=value;
}
}")
.SettingPropertyDescriptionTemplate(p => p = " private {PropertyType} _{PropertyName};\r\n" + p)
.SettingConstructorTemplate(p => p = " this._{PropertyName} ={DefaultValue};")
.CreateClassFile(strPath, strNameSpace);
}
else
{
_db.DbFirst.IsCreateAttribute().IsCreateDefaultValue()
.SettingClassTemplate(p => p = @"
{using} namespace {Namespace}
{
{ClassDescription}{SugarTable}" + (blnSerializable ? "[Serializable]" : "") + @"
public partial class {ClassName}" + (string.IsNullOrEmpty(strInterface) ? "" : (" : " + strInterface)) + @"
{
public {ClassName}()
{
{Constructor}
}
{PropertyName}
}
}
")
.SettingPropertyTemplate(p => p = @"
{SugarColumn}
public {PropertyType} {PropertyName}
{
get
{
return _{PropertyName};
}
set
{
if(_{PropertyName}!=value)
{
base.SetValueCall(" + "\"{PropertyName}\",_{PropertyName}" + @");
}
_{PropertyName}=value;
}
}")
.SettingPropertyDescriptionTemplate(p => p = " private {PropertyType} _{PropertyName};\r\n" + p)
.SettingConstructorTemplate(p => p = " this._{PropertyName} ={DefaultValue};")
.CreateClassFile(strPath, strNameSpace);
}
}
#endregion #region 根据实体类生成数据库表
/// <summary>
/// 功能描述:根据实体类生成数据库表
/// 作  者:beck.huang
/// 创建日期:2018-05-08 10:31:02
/// 任务编号:中餐
/// </summary>
/// <param name="blnBackupTable">是否备份表</param>
/// <param name="lstEntitys">指定的实体</param>
public void CreateTableByEntity<T>(bool blnBackupTable, params T[] lstEntitys) where T : class,new()
{
Type[] lstTypes = null;
if (lstEntitys != null)
{
lstTypes = new Type[lstEntitys.Length];
for (int i = ; i < lstEntitys.Length; i++)
{
T t = lstEntitys[i];
lstTypes[i] = typeof(T);
}
}
CreateTableByEntity(blnBackupTable, lstTypes);
} /// <summary>
/// 功能描述:根据实体类生成数据库表
/// 作  者:beck.huang
/// 创建日期:2018-05-08 10:31:14
/// 任务编号:中餐
/// </summary>
/// <param name="blnBackupTable">是否备份表</param>
/// <param name="lstEntitys">指定的实体</param>
public void CreateTableByEntity(bool blnBackupTable, params Type[] lstEntitys)
{
if (blnBackupTable)
{
_db.CodeFirst.BackupTable().InitTables(lstEntitys); //change entity backupTable
}
else
{
_db.CodeFirst.InitTables(lstEntitys);
}
}
#endregion #endregion #region 静态方法 /// <summary>
/// 功能描述:获得一个DbContext
/// 作  者:beck.huang
/// 创建日期:2018-05-28 17:24:12
/// 任务编号:中餐
/// </summary>
/// <param name="blnIsAutoCloseConnection">是否自动关闭连接(如果为false,则使用接受时需要手动关闭Db)</param>
/// <returns>返回值</returns>
public static DbContext GetDbContext(bool blnIsAutoCloseConnection)
{
return new DbContext(blnIsAutoCloseConnection);
} /// <summary>
/// 功能描述:设置初始化参数
/// 作  者:beck.huang
/// 创建日期:2018-05-08 10:02:32
/// 任务编号:中餐
/// </summary>
/// <param name="strConnectionString">连接字符串</param>
/// <param name="enmDbType">数据库类型</param>
public static void Init(string strConnectionString, DbType enmDbType = SqlSugar.DbType.MySql)
{
_connectionString = strConnectionString;
_dbType = enmDbType;
} /// <summary>
/// 功能描述:创建一个链接配置
/// 作  者:beck.huang
/// 创建日期:2018-05-09 09:03:33
/// 任务编号:中餐
/// </summary>
/// <param name="blnIsAutoCloseConnection">是否自动关闭连接</param>
/// <param name="blnIsShardSameThread">是否夸类事务</param>
/// <returns>ConnectionConfig</returns>
public static ConnectionConfig GetConnectionConfig(bool blnIsAutoCloseConnection = true, bool blnIsShardSameThread = false)
{
ConnectionConfig config = new ConnectionConfig()
{
ConnectionString = _connectionString,
DbType = _dbType,
IsAutoCloseConnection = blnIsAutoCloseConnection,
ConfigureExternalServices = new ConfigureExternalServices()
{
DataInfoCacheService = new HttpRuntimeCache()
},
IsShardSameThread = blnIsShardSameThread
};
return config;
} /// <summary>
/// 功能描述:获取一个自定义的DB
/// 作  者:beck.huang
/// 创建日期:2018-05-08 09:49:36
/// 任务编号:中餐
/// </summary>
/// <param name="config">config</param>
/// <returns>返回值</returns>
public static SqlSugarClient GetCustomDB(ConnectionConfig config)
{
return new SqlSugarClient(config);
}
/// <summary>
/// 功能描述:获取一个自定义的数据库处理对象
/// 作  者:beck.huang
/// 创建日期:2018-05-09 08:56:20
/// 任务编号:中餐
/// </summary>
/// <param name="sugarClient">sugarClient</param>
/// <returns>返回值</returns>
public static SimpleClient<T> GetCustomEntityDB<T>(SqlSugarClient sugarClient) where T : class,new()
{
return new SimpleClient<T>(sugarClient);
}
/// <summary>
/// 功能描述:获取一个自定义的数据库处理对象
/// 作  者:beck.huang
/// 创建日期:2018-05-08 09:50:32
/// 任务编号:中餐
/// </summary>
/// <param name="config">config</param>
/// <returns>返回值</returns>
public static SimpleClient<T> GetCustomEntityDB<T>(ConnectionConfig config) where T : class,new()
{
SqlSugarClient sugarClient = GetCustomDB(config);
return GetCustomEntityDB<T>(sugarClient);
}
#endregion
}

然后是一个BaseDal,基本上覆盖了大部分的增删改查功能

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

HttpRuntimeCache

 using SqlSugar;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Caching; namespace Km.DB
{
public class HttpRuntimeCache : ICacheService
{
public void Add<V>(string key, V value)
{
HttpRuntimeCacheHelper<V>.GetInstance().Add(key, value);
} public void Add<V>(string key, V value, int cacheDurationInSeconds)
{
HttpRuntimeCacheHelper<V>.GetInstance().Add(key, value, cacheDurationInSeconds);
} public bool ContainsKey<V>(string key)
{
return HttpRuntimeCacheHelper<V>.GetInstance().ContainsKey(key);
} public V Get<V>(string key)
{
return HttpRuntimeCacheHelper<V>.GetInstance().Get(key);
} public IEnumerable<string> GetAllKey<V>()
{
return HttpRuntimeCacheHelper<V>.GetInstance().GetAllKey();
} public V GetOrCreate<V>(string cacheKey, Func<V> create, int cacheDurationInSeconds = int.MaxValue)
{
var cacheManager = HttpRuntimeCacheHelper<V>.GetInstance();
if (cacheManager.ContainsKey(cacheKey))
{
return cacheManager[cacheKey];
}
else
{
var result = create();
cacheManager.Add(cacheKey, result, cacheDurationInSeconds);
return result;
}
} public void Remove<V>(string key)
{
HttpRuntimeCacheHelper<V>.GetInstance().Remove(key);
}
} internal class HttpRuntimeCacheHelper<V>
{ #region 全局变量
private static HttpRuntimeCacheHelper<V> _instance = null;
private static readonly object _instanceLock = new object();
#endregion #region 构造函数 private HttpRuntimeCacheHelper() { }
#endregion #region 属性
/// <summary>
///根据key获取value
/// </summary>
/// <value></value>
public V this[string key]
{
get { return (V)HttpRuntime.Cache[CreateKey(key)]; }
}
#endregion #region 公共函数 /// <summary>
/// key是否存在
/// </summary>
/// <param name="key">key</param>
/// <returns> /// 存在<c>true</c> 不存在<c>false</c>. /// /// </returns>
public bool ContainsKey(string key)
{
return HttpRuntime.Cache[CreateKey(key)] != null;
} /// <summary>
/// 获取缓存值
/// </summary>
/// <param name="key">key</param>
/// <returns></returns>
public V Get(string key)
{
return (V)HttpRuntime.Cache.Get(CreateKey(key));
} /// <summary>
/// 获取实例 (单例模式)
/// </summary>
/// <returns></returns>
public static HttpRuntimeCacheHelper<V> GetInstance()
{
if (_instance == null)
lock (_instanceLock)
if (_instance == null)
_instance = new HttpRuntimeCacheHelper<V>();
return _instance;
} /// <summary>
/// 插入缓存(默认20分钟)
/// </summary>
/// <param name="key"> key</param>
/// <param name="value">value</param>
public void Add(string key, V value)
{
Add(key, value, * );
} /// <summary>
/// 插入缓存
/// </summary>
/// <param name="key"> key</param>
/// <param name="value">value</param>
/// <param name="cacheDurationInSeconds">过期时间单位秒</param>
public void Add(string key, V value, int cacheDurationInSeconds)
{
Add(key, value, cacheDurationInSeconds, CacheItemPriority.Default);
} /// <summary>
/// 插入缓存.
/// </summary>
/// <param name="key">key</param>
/// <param name="value">value</param>
/// <param name="cacheDurationInSeconds">过期时间单位秒</param>
/// <param name="priority">缓存项属性</param>
public void Add(string key, V value, int cacheDurationInSeconds, CacheItemPriority priority)
{
string keyString = CreateKey(key);
HttpRuntime.Cache.Insert(keyString, value, null,
DateTime.Now.AddSeconds(cacheDurationInSeconds), Cache.NoSlidingExpiration, priority, null);
} /// <summary>
/// 插入缓存.
/// </summary>
/// <param name="key">key</param>
/// <param name="value">value</param>
/// <param name="cacheDurationInSeconds">过期时间单位秒</param>
/// <param name="priority">缓存项属性</param>
public void Add(string key, V value, int
cacheDurationInSeconds, CacheDependency dependency, CacheItemPriority priority)
{
string keyString = CreateKey(key);
HttpRuntime.Cache.Insert(keyString, value,
dependency, DateTime.Now.AddSeconds(cacheDurationInSeconds), Cache.NoSlidingExpiration, priority, null);
} /// <summary>
/// 删除缓存
/// </summary>
/// <param name="key">key</param>
public void Remove(string key)
{
HttpRuntime.Cache.Remove(CreateKey(key));
} /// <summary>
/// 清除所有缓存
/// </summary>
public void RemoveAll()
{
System.Web.Caching.Cache cache = HttpRuntime.Cache;
IDictionaryEnumerator CacheEnum = cache.GetEnumerator();
ArrayList al = new ArrayList();
while (CacheEnum.MoveNext())
{
al.Add(CacheEnum.Key);
}
foreach (string key in al)
{
cache.Remove(key);
}
} /// <summary>
/// 清除所有包含关键字的缓存
/// </summary>
/// <param name="removeKey">关键字</param>
public void RemoveAll(Func<string, bool> removeExpression)
{
System.Web.Caching.Cache _cache = System.Web.HttpRuntime.Cache;
var allKeyList = GetAllKey();
var delKeyList = allKeyList.Where(removeExpression).ToList();
foreach (var key in delKeyList)
{
HttpRuntime.Cache.Remove(key); ;
}
} /// <summary>
/// 获取所有缓存key
/// </summary>
/// <returns></returns>
public IEnumerable<string> GetAllKey()
{
IDictionaryEnumerator CacheEnum = HttpRuntime.Cache.GetEnumerator();
while (CacheEnum.MoveNext())
{
yield return CacheEnum.Key.ToString();
}
}
#endregion #region 私有函数 /// <summary>
///创建KEY
/// </summary>
/// <param name="key">Key</param>
/// <returns></returns>
private string CreateKey(string key)
{
return key;
}
#endregion
}
}

至于为什么要再封装一层,是为了学习成本,如果不封装,整个项目组大家都要学习Sqlsugar,封装了之后,只需要我自己学习就可以了,别人只用我封装的类就可以

使用SqlSugar封装的数据层基类的更多相关文章

  1. BaseDAL最牛数据层基类2

    using System; using System.Data.Entity; using System.Linq; using System.Threading.Tasks; using Syste ...

  2. Hibernate 数据层基类实现

    提取经常操作表如新增.修改.删除.查询.分页查询.统计等业务功能,形成基类,用泛型传参,有利于每个实体对象数据层继承. package com.base.dao; import java.io.Ser ...

  3. BaseDAL数据层基类1

    /// <summary> /// EF数据库操作基类 /// </summary> /// <typeparam name="T"></ ...

  4. C# 基于MySQL的数据层基类(MySQLHelper)

    这里介绍下比较简单的方式,引用MySql.Data.dll然后添加一个MySqlHelper类来对MySql数据库进行访问和操作. 1.将MySql.Data.dll引用到你的项目中 下载地址:MyS ...

  5. 四、spring集成ibatis进行项目中dao层基类封装

    Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库 ...

  6. 基于SqlSugar的开发框架循序渐进介绍(4)-- 在数据访问基类中对GUID主键进行自动赋值处理

    我们在设计数据库表的时候,往往为了方便,主键ID一般采用字符串类型或者GUID类型,这样对于数据库表记录的迁移非常方便,而且有时候可以在处理关联记录的时候,提前对应的ID值.但有时候进行数据记录插入的 ...

  7. BIM工程信息管理系统-EF实体框架数据操作基类

    EF实体框架数据操作基类主要是规范增.改.查.分页.Lambda表达式条件处理,以及异步操作等特性,这样能够尽可能的符合基类这个特殊类的定义,实现功能接口的最大化重用和统一. 1.程序代码 /// & ...

  8. mysql批量插入数据的基类

    自己设计的一个mysql数据库批量添加数据的基类.用于批量向mysql数据库添加数据,子类实现起来很简单,自测性能也还不错. 1.基类实现-BatchAddBase using System.Coll ...

  9. Table 类(数据表基类)

    只修改数据表某条记录的部分字段(究极进化): public class TableHelper { private Dictionary<string, object> temp; pub ...

随机推荐

  1. spark 分组取topn

    java /** *分组取topn,有序数列去除一些项后,仍然有序,所以应当先排序后分组 *@author Tele * */ public class TopDemo2 { private stat ...

  2. NYOJ 1076 计划数(公式 要么 递归)

    方案数量 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 给出一个N*M的棋盘.左下角坐标是(0.0).右上角坐标是(N,M),规定每次仅仅能向上或者向右走.问从左下 ...

  3. hexo的url路径修改以及发布与修改时间

    hexo默认url是年/月/日,这样其实不利于SEO.hexo生成新文章命令,hexo new [layout] <title>,这个title最好是英文的,因为我们要把这个title放在 ...

  4. react中对象扩展运算符使用问题

    看别人代码看到 render() { return <Modal {...this.props}> {this.props.children} </Modal> } 对其中的{ ...

  5. docker入门3:基础操作(2)

    -- 容器删除 docker rm CONTAIN_ID|CONTAIN_NAME -- 镜像删除 docker rmi IMAGE_ID|IMAGE_NAME -- 进入容器 docker exec ...

  6. 矩阵微分(matrix derivatives)

    关于矩阵求导,得到的导数则是矩阵形式:关于矢量求导,得到的导数则是矢量形式:关于标量求导,得到的仍是标量形式.也即关于谁求导,得到的导数形式便和谁的维度信息一致. fx = f(x) grad = n ...

  7. dwc_otg驱动 "BUG: sleeping function called from invalid context at mm/page_alloc.c"

    方案商的开发板上otg功能只能做device,硬件看过后说没有5v供电,加上后能够识别U盘了,但是内核报了错 [ 3.264000] usb 2-1: new high-speed USB devic ...

  8. 10.24的注意事项——解决linux_jni编译错误的问题

    公司以opus开源库.因此,我们遇到了一些问题. 我将新下载的opus1.1替换掉老版本号之后,单独编译opus没问题.但是编译相关的文件就会报错. 错误信息例如以下: g++ -Wall -fPIC ...

  9. 系统性能指标之 vmstat

    系统性能指标 top top - 19:59:04 up 219 days, 21:51, 2 users, load average: 0.06, 0.06, 0.05 Tasks: 84 tota ...

  10. Maven环境下Poi的使用

    Poi的使用方法,网上还是挺多的,官网也有教程. 附一个比较全的: http://www.cnblogs.com/vTree/archive/2011/11/30/2268721.html 需要说明的 ...