/// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }