/// <summary> /// 在事务中删除数据表中满足指定条件的数据. /// </summary> /// <param name="trans">写事务的事务控制器.</param> /// <param name="func">用于创建删除条件.</param> /// <exception cref="ArgumentNullException">当未指派事务控制器时引发此异常.</exception> /// <exception cref="Exception">当未指定更新条件或删除过程产生错误时引发此异常.</exception> /// <returns></returns> public int Delete(DBTransactionController trans, Func <TEntityAgent, object[]> func) { if (trans == null) { throw new ArgumentNullException(nameof(trans)); } if (func == null) { throw new Exception("在不指定条件的情况下将会删除整个数据表中的所有数据,该操作已被禁止."); } EntityTableAttribute tableAttribute = GetTableAttribute(); QuickDataChanger DC = new QuickDataChanger(trans, Writer); TEntityAgent agent = new TEntityAgent(); agent.TableContext = this; DC.Conditions.AddRange(func(agent)); trans.DBA.Errors.Clear(); int result = DC.Delete(tableAttribute.TableName); if (result == -1) { if (trans.DBA.Errors != null && trans.DBA.Errors.Count > 0) { throw new Exception(trans.DBA.Errors[0].Message); } else { throw new Exception("删除数据是产生了未知的错误."); } } return(result); }
/// <summary> /// 删除数据表中满足指定条件的数据. /// </summary> /// <param name="func">用于创建删除条件.</param> /// <exception cref="Exception">当未指定更新条件或删除过程产生错误时引发此异常.</exception> /// <returns>返回受影响记录数.</returns> public int Delete(Func <TEntityAgent, object[]> func) { if (func == null) { throw new Exception("在不指定条件的情况下将会删除整个数据表中的所有数据,该操作已被禁止."); } EntityTableAttribute tableAttribute = GetTableAttribute(); TEntityAgent agent = new TEntityAgent(); agent.TableContext = this; object[] conditions = func(agent); int result = 0; if (BatchProccesser == null) { QuickDataChanger DC = new QuickDataChanger(Writer); DC.Conditions.AddRange(conditions); result = DC.Delete(tableAttribute.TableName); if (result == -1) { throw new Exception(Writer.DBA.Error.Message); } } else { DbCommandBuilder cb = new DbCommandBuilder(); cb.Delete(tableAttribute.TableName).Where(conditions); result = BatchProccesser.Commander.ExecuteNonQuery(cb); } return(result); }
/// <summary> /// 从指定的表中删除指定条件的数据,并返回受影响的记录数. /// </summary> /// <param name="tableName">表名称.</param> /// <param name="condition">删除条件.</param> /// <param name="trans">在该事务中执行更新,若无事务则为 null.</param> /// <returns></returns> public virtual int Delete(string tableName, object[] condition, DBTransactionController trans = null) { QuickDataChanger dc = new QuickDataChanger(trans, db); dc.Conditions.AddRange(condition); int result = dc.Delete(tableName); ThrowDbException(result, trans); return(result); }
/// <summary> /// 删除数据表中满足指定条件的数据. /// </summary> /// <param name="func">用于创建删除条件.</param> /// <exception cref="Exception">当未指定更新条件或删除过程产生错误时引发此异常.</exception> /// <returns>返回受影响记录数.</returns> public int Delete(Func <TEntityAgent, object[]> func) { if (func == null) { throw new Exception("在不指定条件的情况下将会删除整个数据表中的所有数据,该操作已被禁止."); } EntityTableAttribute tableAttribute = GetTableAttribute(); QuickDataChanger DC = new QuickDataChanger(Writer); TEntityAgent agent = new TEntityAgent(); agent.TableContext = this; DC.Conditions.AddRange(func(agent)); int result = DC.Delete(tableAttribute.TableName); if (result == -1) { throw new Exception(Writer.DBA.Error.Message); } return(result); }