/// <summary> /// 将实体对象更新到数据库,调用该方法时实体对象必须具备主键属性 /// </summary> /// <param name="object">实体对象</param> public virtual int Update(object @object) { IEntityObject entity = (IEntityObject)@object; Type elementType = @object.GetType().BaseType; IUpdateable updateable = this.factory.CreateUpdateProvider(this).CreateUpdate(elementType); var properties = @object.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); properties.Each(property => { if (property.IsPrimaryKey() == false) { if (entity.ChangedProperties.Contains(property.Name)) { ParameterExpression pe = Expression.Parameter(@object.GetType(), "s"); MemberExpression me = Expression.MakeMemberAccess(pe, property); updateable.Set(me, property.EmitGetValue(@object)); } } else { ParameterExpression pe = Expression.Parameter(@object.GetType(), "s"); MemberExpression me = Expression.MakeMemberAccess(pe, property); ConstantExpression ce = Expression.Constant(property.EmitGetValue(@object), property.PropertyType); BinaryExpression be = Expression.Equal(me, ce); updateable = updateable.Where(be); } }); return(updateable.Execute(elementType)); }
/// <summary> /// 更新某些列 /// </summary> /// <param name="entity">实体</param> /// <param name="lstColumns">列集合</param> /// <param name="lstIgnoreColumns">忽略的列集合</param> /// <param name="strWhere">筛选条件</param> /// <returns></returns> public async Task <bool> Update(TEntity entity, List <string> lstColumns = null, List <string> lstIgnoreColumns = null, string strWhere = "") { //IUpdateable<TEntity> up = await Task.Run(() => m_db.Updateable(entity)); //if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) //{ // up = await Task.Run(() => up.IgnoreColumns(it => lstIgnoreColumns.Contains(it))); //} //if (lstColumns != null && lstColumns.Count > 0) //{ // up = await Task.Run(() => up.UpdateColumns(it => lstColumns.Contains(it))); //} //if (!string.IsNullOrEmpty(strWhere)) //{ // up = await Task.Run(() => up.Where(strWhere)); //} //return await Task.Run(() => up.ExecuteCommand()) > 0; IUpdateable <TEntity> up = m_db.Updateable(entity); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = up.IgnoreColumns(lstIgnoreColumns.ToArray()); } if (lstColumns != null && lstColumns.Count > 0) { up = up.UpdateColumns(lstColumns.ToArray()); } if (!string.IsNullOrEmpty(strWhere)) { up = up.Where(strWhere); } return(await up.ExecuteCommandHasChangeAsync()); }
/// <summary> /// 根据条件更新实体信息(异步) /// </summary> /// <param name="entity">实体</param> /// <param name="lstColumns">实体列</param> /// <param name="lstIgnoreColumns">忽略列</param> /// <param name="strWhere">条件</param> /// <returns></returns> public async Task <bool> T_Update(TEntity entity, List <string> lstColumns = null, List <string> lstIgnoreColumns = null, string strWhere = "") { bool result = false; try { _db.Ado.BeginTran(); IUpdateable <TEntity> up = _db.Updateable(entity); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = up.IgnoreColumns(lstIgnoreColumns.ToArray()); } if (lstColumns != null && lstColumns.Count > 0) { up = up.UpdateColumns(lstColumns.ToArray()); } if (!string.IsNullOrEmpty(strWhere)) { up = up.Where(strWhere); } result = await up.ExecuteCommandHasChangeAsync(); _db.Ado.CommitTran(); } catch (Exception) { _db.Ado.RollbackTran(); } return(result); }
/// <summary> /// 根据条件更新实体信息(返回受影响行数) /// </summary> /// <param name="entity">实体</param> /// <param name="lstColumns">实体列</param> /// <param name="lstIgnoreColumns">忽略列</param> /// <param name="strWhere">条件</param> /// <returns></returns> public int UpdateEx(TEntity entity, List <string> lstColumns = null, List <string> lstIgnoreColumns = null, string strWhere = "") { int result = 0; try { _db.Ado.BeginTran(); IUpdateable <TEntity> up = _db.Updateable(entity); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = up.IgnoreColumns(lstIgnoreColumns.ToArray()); } if (lstColumns != null && lstColumns.Count > 0) { up = up.UpdateColumns(lstColumns.ToArray()); } if (!string.IsNullOrEmpty(strWhere)) { up = up.Where(strWhere); } result = up.ExecuteCommand(); _db.Ado.CommitTran(); } catch (Exception) { _db.Ado.RollbackTran(); } return(result); }
/// <summary> /// 根据列、条件更新实体 /// </summary> /// <param name="entity"></param> /// <param name="lstColumns"></param> /// <param name="lstIgnoreColumns"></param> /// <param name="strWhere"></param> /// <returns></returns> public async Task <bool> UpdateAsync <T>( T entity, List <string> lstColumns = null, List <string> lstIgnoreColumns = null, string strWhere = "") where T : class, new() { IUpdateable <T> up = _db.Updateable(entity); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = up.IgnoreColumns(lstIgnoreColumns.ToArray()); } if (lstColumns != null && lstColumns.Count > 0) { up = up.UpdateColumns(lstColumns.ToArray()); } if (!string.IsNullOrEmpty(strWhere)) { up = up.Where(strWhere); } return(await up.ExecuteCommandHasChangeAsync()); }
/// <summary> /// 功能描述:修改数据 /// </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() > 0); }
public Task <int> UpdateAsync(Expression <Func <TEntity, TEntity> > update, Expression <Func <TEntity, bool> > predicate = null) { IUpdateable <TEntity> up = _dbContext.Updateable(update); if (predicate != null) { up = up.Where(predicate); } return(up.ExecuteCommandAsync()); }
/// <summary> /// 编辑 /// </summary> /// <typeparam name="T">表实体</typeparam> /// <param name="entity">实体内容</param> /// <param name="columns">要编辑的列</param> /// <param name="where">条件</param> /// <returns>受影响行数</returns> public int Edit <T>(T entity, Expression <Func <T, T> > columns, Expression <Func <T, bool> > where) where T : class, new() { IUpdateable <T> r = _db.Updateable(entity); if (columns != null) { r = r.UpdateColumns(columns); } return(r.Where(where).ExecuteCommand()); }
/// <summary> /// 功能描述:修改数据 /// </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() > 0); }
/// <summary> /// 更新实体 /// </summary> /// <typeparam name="T">表实体</typeparam> /// <param name="entity"></param> /// <param name="fileds">需要更新的字段</param> /// <param name="where">条件</param> /// <returns>受影响行数</returns> public int Update <T>(T entity, Expression <Func <T, object> > fileds = null , Expression <Func <T, bool> > where = null) where T : class, new() { IUpdateable <T> upd = _db.Updateable(entity); if (fileds != null) { upd.UpdateColumns(fileds); } if (where != null) { upd.Where(where); } return(upd.ExecuteCommand()); }
public async Task <int> Update(TEntity model, List <string> columns = null, List <string> ignoreColumn = null, string where = null) { IUpdateable <TEntity> up = await Task.Run(() => Db.Updateable <TEntity>(model)); if (columns != null && columns.Count > 0) { up = await Task.Run(() => up.UpdateColumns(columns.ToArray())); } if (ignoreColumn != null && ignoreColumn.Count > 0) { up = await Task.Run(() => up.IgnoreColumns(ignoreColumn.ToArray())); } if (string.IsNullOrWhiteSpace(where)) { up = await Task.Run(() => up.Where(where)); } return(await up.ExecuteCommandAsync()); }
public bool Update(T model, List <string> lstColumns = null, List <string> lstIgnoreColumns = null, string strWhere = "") { IUpdateable <T> up = db.Updateable(model); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = up.IgnoreColumns(lstIgnoreColumns.ToArray()); } if (lstColumns != null && lstColumns.Count > 0) { up = up.UpdateColumns(lstColumns.ToArray()); } if (!string.IsNullOrEmpty(strWhere)) { up = up.Where(strWhere); } return(up.ExecuteCommand() > 0); }
/// <summary> /// 更新 忽略更新某些列 及更新某些列 通过条件判断 /// </summary> /// <param name="entity"></param> /// <param name="lstColumns"></param> /// <param name="lstIgnoreColumns"></param> /// <param name="strWhere"></param> /// <returns></returns> public async Task <bool> Update(TEntity entity, List <string> lstColumns = null, List <string> lstIgnoreColumns = null, string strWhere = "") { IUpdateable <TEntity> up = await Task.Run(() => db.Updateable(entity)); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = await Task.Run(() => up.IgnoreColumns(lstIgnoreColumns.ToArray())); } if (lstColumns != null && lstColumns.Count > 0) { up = await Task.Run(() => up.UpdateColumns(lstColumns.ToArray())); } if (!string.IsNullOrEmpty(strWhere)) { up = await Task.Run(() => up.Where(strWhere)); } return(await Task.Run(() => up.ExecuteCommand()) > 0); }
/// <summary> /// 更新实体数据 /// </summary> /// <param name="entity">实体类</param> /// <param name="lstColumns">排除列集合</param> /// <param name="lstIgnoreColumns">更新列集合(放对应的更新列就好)</param> /// <param name="strWhere"></param> /// <returns></returns> public async Task <bool> Update(TEntity entity, List <string> lstColumns = null, List <string> lstIgnoreColumns = null, string strWhere = "") { IUpdateable <TEntity> up = _db.Updateable(entity); //排除某一个列的更新 if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = up.IgnoreColumns(lstIgnoreColumns.ToArray()); } //只更新对应的列 if (lstColumns != null && lstColumns.Count > 0) { up = up.UpdateColumns(lstColumns.ToArray()); } if (!string.IsNullOrEmpty(strWhere)) { up = up.Where(strWhere); } return(await up.ExecuteCommandHasChangeAsync()); }
/// <summary> /// 根据指定条件更新指定列 /// </summary> /// <param name="entity"></param> /// <param name="lstColumns"></param> /// <param name="lstIgnoreColumns"></param> /// <param name="strWhere"></param> /// <returns></returns> public async Task <bool> Update(TEntity entity, List <string> lstColumns = null, List <string> lstIgnoreColumns = null, string strWhere = "") { IUpdateable <TEntity> up = _db.Updateable(entity); if (lstColumns?.Any() == true) { up.UpdateColumns(lstColumns.ToArray()); } if (lstIgnoreColumns?.Any() == true) { up.IgnoreColumns(lstIgnoreColumns.ToArray()); } if (!string.IsNullOrEmpty(strWhere)) { up.Where(strWhere); } return(await up.ExecuteCommandHasChangeAsync()); }
/// <summary> /// 更新 /// </summary> /// <param name="entity">实体</param> /// <param name="columns">更新的列</param> /// <param name="ignoreColumns">忽略的列</param> /// <param name="strWhere">更新条件</param> /// <returns></returns> public virtual async Task <bool> Update(T entity, List <string> columns = null, List <string> ignoreColumns = null, string strWhere = "") { IUpdateable <T> updateable = this.SugarClient.Updateable(entity); if (ignoreColumns != null && ignoreColumns.Count > 0) { updateable = updateable.IgnoreColumns(ignoreColumns.ToArray()); } if (columns != null && columns.Count > 0) { updateable = updateable.UpdateColumns(columns.ToArray()); } if (!string.IsNullOrEmpty(strWhere)) { updateable = updateable.Where(strWhere); } return(await updateable.ExecuteCommandHasChangeAsync()); }
/// <summary> /// 功能描述:修改指定的列和值 /// </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() > 0); }
/// <summary> /// 功能描述:修改数据 /// </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 > 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); }
/// <summary> /// 功能描述:修改数据 /// </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 > 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); }
/// <summary> /// 功能描述:修改数据 /// </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 > 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()); }
public static async Task <bool> Update <TEntity>( this SqlSugarClient db, TEntity entity, List <string> lstColumns = null, List <string> lstIgnoreColumns = null, string strWhere = "" ) where TEntity : EntityBase, new() { IUpdateable <TEntity> up = await Task.Run(() => db.Updateable(entity)); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = await Task.Run(() => up.IgnoreColumns(it => lstIgnoreColumns.Contains(it))); } if (lstColumns != null && lstColumns.Count > 0) { up = await Task.Run(() => up.UpdateColumns(it => lstColumns.Contains(it))); } if (!string.IsNullOrEmpty(strWhere)) { up = await Task.Run(() => up.Where(strWhere)); } return(await Task.Run(() => up.ExecuteCommand()) > 0); }
/// <summary> /// /// </summary> /// <param name="expression"></param> /// <returns></returns> public IWUpdatable <T> Where(Expression <Func <T, bool> > expression) { _updateable = _updateable.Where(expression); return(this); }