public static Task ExecuteAsync <T>(DbContext context, IList <T> entities, OperationType operationType, BulkConfig bulkConfig, Action <decimal> progress, CancellationToken cancellationToken) where T : class { if (operationType != OperationType.Truncate && entities.Count == 0) { return(Task.CompletedTask); } TableInfo tableInfo = TableInfo.CreateInstance(context, entities, operationType, bulkConfig); if (operationType == OperationType.Insert && !tableInfo.BulkConfig.SetOutputIdentity) { return(SqlBulkOperation.InsertAsync(context, entities, tableInfo, progress, cancellationToken)); } else if (operationType == OperationType.Read) { return(SqlBulkOperation.ReadAsync(context, entities, tableInfo, progress, cancellationToken)); } else if (operationType == OperationType.Truncate) { return(SqlBulkOperation.TruncateAsync(context, tableInfo)); } else { return(SqlBulkOperation.MergeAsync(context, entities, tableInfo, operationType, progress, cancellationToken)); } }
public static Task ExecuteAsync(DbContext context, Type type, IList <object> entities, OperationType operationType, BulkConfig bulkConfig, Action <decimal> progress, CancellationToken cancellationToken) { using (ActivitySources.StartExecuteActivity(operationType, entities.Count)) { if (operationType != OperationType.Truncate && entities.Count == 0) { return(Task.CompletedTask); } TableInfo tableInfo = TableInfo.CreateInstance(context, type, entities, operationType, bulkConfig); if (operationType == OperationType.Insert && !tableInfo.BulkConfig.SetOutputIdentity) { return(SqlBulkOperation.InsertAsync(context, type, entities, tableInfo, progress, cancellationToken)); } else if (operationType == OperationType.Read) { return(SqlBulkOperation.ReadAsync(context, type, entities, tableInfo, progress, cancellationToken)); } else if (operationType == OperationType.Truncate) { return(SqlBulkOperation.TruncateAsync(context, tableInfo, cancellationToken)); } else { return(SqlBulkOperation.MergeAsync(context, type, entities, tableInfo, operationType, progress, cancellationToken)); } } }
public static Task ExecuteAsync <T>(DbContext context, IList <T> entities, OperationType operationType, BulkConfig bulkConfig, Action <decimal> progress) where T : class { TableInfo tableInfo = TableInfo.CreateInstance(context, entities, operationType, bulkConfig); if (operationType == OperationType.Insert && !tableInfo.BulkConfig.SetOutputIdentity) { return(SqlBulkOperation.InsertAsync(context, entities, tableInfo, progress)); } else if (operationType == OperationType.Read) { return(SqlBulkOperation.ReadAsync(context, entities, tableInfo, progress)); } else { return(SqlBulkOperation.MergeAsync(context, entities, tableInfo, operationType, progress)); } }
public static async Task ExecuteAsync <T>(DbContext context, Type type, IList <T> entities, OperationType operationType, BulkConfig bulkConfig, Action <decimal> progress, CancellationToken cancellationToken = default) where T : class { type ??= typeof(T); using (ActivitySources.StartExecuteActivity(operationType, entities.Count)) { if (entities.Count == 0 && operationType != OperationType.InsertOrUpdateOrDelete && operationType != OperationType.Truncate && operationType != OperationType.SaveChanges) { return; } if (operationType == OperationType.SaveChanges) { await DbContextBulkTransactionSaveChanges.SaveChangesAsync(context, bulkConfig, progress, cancellationToken); } else if (bulkConfig?.IncludeGraph == true) { await DbContextBulkTransactionGraphUtil.ExecuteWithGraphAsync(context, entities, operationType, bulkConfig, progress, cancellationToken); } else { TableInfo tableInfo = TableInfo.CreateInstance(context, type, entities, operationType, bulkConfig); if (operationType == OperationType.Insert && !tableInfo.BulkConfig.SetOutputIdentity) { await SqlBulkOperation.InsertAsync(context, type, entities, tableInfo, progress, cancellationToken); } else if (operationType == OperationType.Read) { await SqlBulkOperation.ReadAsync(context, type, entities, tableInfo, progress, cancellationToken); } else if (operationType == OperationType.Truncate) { await SqlBulkOperation.TruncateAsync(context, tableInfo, cancellationToken); } else { await SqlBulkOperation.MergeAsync(context, type, entities, tableInfo, operationType, progress, cancellationToken); } } } }
public static async Task ExecuteAsync(DbContext context, Type type, IList <object> entities, OperationType operationType, BulkConfig bulkConfig, Action <decimal> progress, CancellationToken cancellationToken) { using (ActivitySources.StartExecuteActivity(operationType, entities.Count)) { if (operationType != OperationType.Truncate && entities.Count == 0) { return; } if (bulkConfig?.IncludeGraph == true) { await DbContextBulkTransactionGraphUtil.ExecuteWithGraphAsync(context, entities, operationType, bulkConfig, progress, cancellationToken); } else { TableInfo tableInfo = TableInfo.CreateInstance(context, type, entities, operationType, bulkConfig); if (operationType == OperationType.Insert && !tableInfo.BulkConfig.SetOutputIdentity) { await SqlBulkOperation.InsertAsync(context, type, entities, tableInfo, progress, cancellationToken); } else if (operationType == OperationType.Read) { await SqlBulkOperation.ReadAsync(context, type, entities, tableInfo, progress, cancellationToken); } else if (operationType == OperationType.Truncate) { await SqlBulkOperation.TruncateAsync(context, tableInfo, cancellationToken); } else { await SqlBulkOperation.MergeAsync(context, type, entities, tableInfo, operationType, progress, cancellationToken); } } } }