Example #1
0
        public int Delete(IEnumerable <TModel> models, bool throwIfAnyModelFailed = true)
        {
            int success = 0;

            var queryStrategy = _queryStrategyProvider.GetDeleteStrategy <TModel>(_queryTable.ModelStrategy);
            var sql           = queryStrategy.GetDbQueryScript();
            var dbparams      = queryStrategy.GetDbParameters();
            var exceptions    = new List <DbOperationException>();

            _serviceProvider.Open();

            foreach (var model in models)
            {
                DbModelBindingHelper.BindingModelToParameters(
                    model, _queryTable.ModelStrategy.PropertyStrategies, dbparams);

                try
                {
                    if (_serviceProvider.Execute(sql, dbparams) > 0)
                    {
                        success++;
                    }
                    else
                    {
                        exceptions.Add(new DbOperationException("ERROR_SQL_EXECUTION_FAILED", sql, dbparams));
                    }
                }
                catch (Exception ex)
                {
                    exceptions.Add(new DbOperationException("ERROR_SQL_EXECUTION_FAILED", ex, sql, dbparams));
                }
            }

            _serviceProvider.Close();

            if (throwIfAnyModelFailed)
            {
                throw new DbMultipleOperationsException(exceptions);
            }

            return(success);
        }