/// <summary> /// 更新数据 /// </summary> /// <param name="entity">更新数据的实体</param> protected bool InsertInner(TData entity) { PrepareSave(entity, DataOperatorType.Insert); using (var cmd = DataBase.CreateCommand()) { var isIdentitySql = SetInsertCommand(entity, cmd); SqlServerDataBase.TraceSql(cmd); if (isIdentitySql) { var key = cmd.ExecuteScalar(); if (key == DBNull.Value || key == null) { return(false); } entity.SetValue(KeyField, key); } else { if (cmd.ExecuteNonQuery() == 0) { return(false); } } var sql = AfterUpdateSql(PrimaryKeyConditionSQL); if (!string.IsNullOrEmpty(sql)) { DataBase.Execute(sql, CreatePimaryKeyParameter(entity.GetValue(KeyField))); } } EndSaved(entity, DataOperatorType.Insert); return(true); }
/// <summary> /// 插入数据 /// </summary> /// <param name="entity">插入数据的实体</param> private async Task <bool> UpdateInnerAsync(TData entity) { if (UpdateByMidified && !entity.__status.IsModified) { return(false); } int result; PrepareSave(entity, DataOperatorType.Update); string sql = GetModifiedSqlCode(entity); if (sql == null) { return(false); } using (var cmd = DataBase.CreateCommand()) { SetUpdateCommand(entity, cmd); cmd.CommandText = CreateUpdateSql(sql, PrimaryKeyConditionSQL); SqlServerDataBase.TraceSql(cmd); result = await cmd.ExecuteNonQueryAsync(); } if (result <= 0) { return(false); } await EndSaved(entity, DataOperatorType.Update); return(true); }
/// <summary> /// 条件更新实体中已记录更新部分 /// </summary> /// <param name="entity">实体</param> /// <param name="lambda">条件</param> /// <returns>更新行数</returns> public int SetValue(TData entity, Expression <Func <TData, bool> > lambda) { if (UpdateByMidified && !entity.__status.IsModified) { return(-1); } var setValueSql = GetModifiedSqlCode(entity); if (setValueSql == null) { return(-1); } var convert = Compile(lambda); var sql = CreateUpdateSql(setValueSql, convert.ConditionSql); int result; using (var cmd = DataBase.CreateCommand()) { SetUpdateCommand(entity, cmd); cmd.CommandText = CreateUpdateSql(sql, convert.ConditionSql); SqlServerDataBase.TraceSql(cmd); result = cmd.ExecuteNonQuery(); } return(result); }
/// <summary> /// 条件更新实体中已记录更新部分 /// </summary> /// <param name="entity">实体</param> /// <param name="lambda">条件</param> /// <returns>更新行数</returns> public async Task <int> SetValueAsync(TData entity, Expression <Func <TData, bool> > lambda) { if (UpdateByMidified && !entity.__status.IsModified) { return(-1); } var setValueSql = GetModifiedSqlCode(entity); if (setValueSql == null) { return(-1); } var convert = Compile(lambda); using var cmd = DataBase.CreateCommand(); SetUpdateCommand(entity, cmd); cmd.CommandText = CreateUpdateSql(setValueSql, convert.ConditionSql); SqlServerDataBase.TraceSql(cmd); return(await cmd.ExecuteNonQueryAsync()); }