コード例 #1
0
        public OperationResult BulkDelete <T>(T entity, Guid idToRemove, int timeOut = 20000,
                                              string connectionStringName            = "Sys10Context")
        {
            using (var connection = new Sys10Database(connectionStringName, timeOut).Connection)
            {
                connection.Open();

                var sqlTransaction = connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);

                var tableName  = ((IModelBase)entity).TableName;
                var primaryKey = ((IModelBase)entity).PrimaryKey;

                OperationResult operationResult;
                var             count = 0;

                operationResult = DeleteByIdsUsingDataTableWithTransaction(primaryKey, new[] { idToRemove }.ToList(), tableName, sqlTransaction);

                if (operationResult.Success)
                {
                    sqlTransaction.Commit();
                }
                else if (sqlTransaction != null)
                {
                    sqlTransaction.Rollback();
                }

                return(operationResult);
            }
        }
コード例 #2
0
        private void OpenConnection()
        {
            var DB         = new Sys10Database("Sys10Context", 20000);
            var connection = DB.Connection;

            connection.Open();

            var randomNumber    = new Random();
            var transactionName = $"Transaction_{randomNumber.Next()}";

            SqlTransaction = connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted, transactionName);
        }
コード例 #3
0
        public OperationResult BulkEditRange <T>(IEnumerable <T> entities, int timeOut = 20000, string connectionStringName = "Sys10Context")
        {
            if (!entities.Any())
            {
                return new OperationResult()
                       {
                           Message = "Lista vazia",
                           Success = true
                       }
            }
            ;

            var tableName  = ((IModelBase)entities.First()).TableName;
            var primaryKey = ((IModelBase)entities.First()).PrimaryKey;

            using (var connection = new Sys10Database(connectionStringName, timeOut).Connection)
            {
                connection.Open();

                var sqlTransaction = connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);

                try
                {
                    OperationResult operationResult;

                    var entityDatatable = entities.ToList().ToDataTable(tableName, new[] { primaryKey });
                    operationResult = UpdateUsingDataTableWithTransaction(entityDatatable, sqlTransaction);

                    if (operationResult.Success)
                    {
                        sqlTransaction.Commit();
                    }
                    else if (sqlTransaction != null)
                    {
                        sqlTransaction.Rollback();
                    }

                    return(operationResult);
                }
                catch (Exception ex)
                {
                    if (sqlTransaction != null)
                    {
                        sqlTransaction.Rollback();
                    }

                    return(new OperationResult(false, ex.Message));
                }
            }
        }
コード例 #4
0
        public OperationResult BulkDeleteRange <T>(IEnumerable <T> entities, List <Guid> idsToRemove, int timeOut = 20000,
                                                   string connectionStringName = "Sys10Context")
        {
            if (!entities.Any())
            {
                return new OperationResult()
                       {
                           Message = "Lista vazia",
                           Success = true
                       }
            }
            ;

            using (var connection = new Sys10Database(connectionStringName, timeOut).Connection)
            {
                connection.Open();

                var sqlTransaction = connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);

                if (!entities.Any())
                {
                    return new OperationResult()
                           {
                               Message = "Lista vazia",
                               Success = true
                           }
                }
                ;

                var tableName  = ((IModelBase)entities.First()).TableName;
                var primaryKey = ((IModelBase)entities.First()).PrimaryKey;

                OperationResult operationResult;
                var             count = 0;

                operationResult = DeleteByIdsUsingDataTableWithTransaction(primaryKey, idsToRemove, tableName, sqlTransaction);

                if (operationResult.Success)
                {
                    sqlTransaction.Commit();
                }
                else if (sqlTransaction != null)
                {
                    sqlTransaction.Rollback();
                }

                return(operationResult);
            }
        }
コード例 #5
0
        private OperationResult BulkInsert(DataTable internalTable, int timeOut = 20000, string connectionStringName = "Sys10Context")
        {
            using (var connection = new Sys10Database(connectionStringName, timeOut).Connection)
            {
                var bulkSql = new SqlBulkCopy
                              (
                    connection,
                    SqlBulkCopyOptions.TableLock |
                    SqlBulkCopyOptions.FireTriggers,
                    null
                              );
                try
                {
                    bulkSql.DestinationTableName = internalTable.TableName;
                    bulkSql.BulkCopyTimeout      = timeOut;
                    foreach (DataColumn coluna in internalTable.Columns)
                    {
                        if ((coluna.Table.TableName == "ExtraCards" ||
                             coluna.Table.TableName == "OrderItems" ||
                             coluna.Table.TableName == "OrderItemsDeleted") &&
                            (coluna.Caption == "Monthly" || coluna.Caption == "Formatting"))
                        {
                            continue;
                        }

                        bulkSql.ColumnMappings.Add(coluna.ColumnName, coluna.ColumnName);
                    }

                    connection.Open();
                    bulkSql.WriteToServer(internalTable);
                    connection.Close();

                    return(new OperationResult());
                }
                catch (Exception ex)
                {
                    return(new OperationResult(false, ex.Message));
                }
            }
        }
コード例 #6
0
        public static List <T> ToList <T>(this DataTable dataTable)
        {
            var columnNameList = dataTable.Columns.Cast <DataColumn>().Select(c => c.ColumnName).ToList();
            var properties     = typeof(T).GetProperties();

            return(dataTable.AsEnumerable().Select(row =>
            {
                var targetObject = Activator.CreateInstance <T>();
                foreach (var propety in properties)
                {
                    if (columnNameList.Contains(propety.Name))
                    {
                        var propertyInfo = targetObject.GetType().GetProperty(propety.Name);
                        propety.SetValue(targetObject, row[propety.Name] == DBNull.Value ? null : Sys10Database.ChangeType(row[propety.Name], propertyInfo.PropertyType));
                    }
                }
                return targetObject;
            }).ToList());
        }