public static int BulkAddAll <TEntity>(this IBulkInsertContext context, IEnumerable <TEntity> entities, Action callback = null) where TEntity : class { var entitiesWithRequiredUser = entities as IList <TEntity> ?? entities.ToList(); BulkInsert(context, entitiesWithRequiredUser, callback); return(entitiesWithRequiredUser.Count); }
protected static void LoadRecords <T>(IBulkInsertContext context, IMother <T> mother, string message, ConsoleTicker consoleTicker, int?takeLimit = null) where T : class { var records = Birth(mother, message, consoleTicker, takeLimit); if (message != null && consoleTicker != null) { Console.Write("\r"); } LoadRecords(context, records, message, consoleTicker, takeLimit); }
protected static void LoadRecords <T>(IBulkInsertContext context, List <T> records, string message, ConsoleTicker consoleTicker) where T : class { if (message != null) { Console.Write(message + "...\r"); } consoleTicker.ResetTicker(); var count = context.BulkAddAll(records, message != null ? () => consoleTicker.TickConsole(message + "...") : (Action)null); consoleTicker.ReplaceCurrentLine("{0}: {1} records.", message, count); }
private static List <TEntity> LoadProducts <TEntity>(IBulkInsertContext newContext, IMother <TEntity> mother, ConsoleTicker consoleTicker, string message, Func <TEntity, Product> productSelector = null) where TEntity : class { var products = mother.BirthAll(() => consoleTicker.TickConsole(message + "...")).ToList(); consoleTicker.ReplaceCurrentLine(message); if (productSelector != null) { LoadRecords(newContext, products.Select(productSelector), "\t\tproducts", consoleTicker); } LoadRecords(newContext, products, "\t" + message.ToLower(), consoleTicker); return(products); }
protected static void LoadRecords <T>(IBulkInsertContext context, IEnumerable <T> records, string message, ConsoleTicker consoleTicker, int?takeLimit = null) where T : class { if (message != null) { Console.Write(message + "...\r"); } var recordsList = takeLimit != null?records.Take(takeLimit.Value).ToList() : records.ToList(); consoleTicker.ResetTicker(); var count = context.BulkAddAll(recordsList, message != null ? () => consoleTicker.TickConsole(message + "...") : (Action)null); consoleTicker.ReplaceCurrentLine("{0}: {1} records.", message, count); }
public static void BulkInsert <TEntity>(this IBulkInsertContext context, IList <TEntity> entities, Action callback = null) where TEntity : class { // inspired by http://elegantcode.com/2012/01/26/sqlbulkcopy-for-generic-listt-useful-for-entity-framework-nhibernate/ using (var bulkCopy = new SqlBulkCopy(context.ConnectionString)) { bulkCopy.BulkCopyTimeout = 300; var objContext = context.ObjectContext; var entityType = objContext.GetEntityType <TEntity>(); var tableName = objContext.GetTableName <TEntity>(); bulkCopy.BatchSize = entities.Count; bulkCopy.DestinationTableName = tableName; var columns = DataTableColumnHelper.GetDataTableColumns(entityType.Properties); var table = BuildDataTable(bulkCopy, columns); LoadDataTable(entities, columns, table, callback); bulkCopy.WriteToServer(table); } }