Beispiel #1
0
        private static void PersistDataUsingRangeFrequentCommitsAndRecreateContext(IList <Example> data)
        {
            ExampleContext context = null;

            try
            {
                context = new ExampleContext();
                context.Configuration.AutoDetectChangesEnabled = false;

                var dataSize = data.Count;
                for (var i = 0; i < dataSize; i += CommitCount)
                {
                    context.Set <Example>().AddRange(data.Skip(i).Take(CommitCount));
                    context.SaveChanges();

                    context.Dispose();
                    context = new ExampleContext();
                    context.Configuration.AutoDetectChangesEnabled = false;
                }
            }
            finally
            {
                if (context != null)
                {
                    context.Dispose();
                }
            }
        }
Beispiel #2
0
 private static void ClearDatabase()
 {
     using (var context = new ExampleContext())
     {
         var sql = String.Format("TRUNCATE TABLE {0}", context.GetTableName <Example>());
         context.Database.ExecuteSqlCommand(sql);
     }
 }
Beispiel #3
0
        private static void PersistDataUsingRange(IEnumerable <Example> data)
        {
            using (var context = new ExampleContext())
            {
                context.Configuration.AutoDetectChangesEnabled = false;

                context.Set <Example>().AddRange(data);
                context.SaveChanges();
            }
        }
Beispiel #4
0
        private static void PersistDataUsingBulkInsert(IEnumerable <Example> data)
        {
            using (var context = new ExampleContext())
            {
                context.Configuration.AutoDetectChangesEnabled = false;

                using (var tx = new TransactionScope())
                {
                    context.BulkInsert(data, SqlBulkCopyOptions.KeepIdentity | SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.KeepNulls);
                    tx.Complete();
                }
            }
        }
Beispiel #5
0
        private static void PersistDataClassic(IEnumerable <Example> data)
        {
            using (var context = new ExampleContext())
            {
                context.Configuration.AutoDetectChangesEnabled = false;

                foreach (var record in data)
                {
                    context.Example.Add(record);
                }

                context.SaveChanges();
            }
        }
Beispiel #6
0
        private static void PersistDataUsingRangeAndFrequentCommits(IList <Example> data)
        {
            using (var context = new ExampleContext())
            {
                context.Configuration.AutoDetectChangesEnabled = false;

                var dataSize = data.Count;
                for (var i = 0; i < dataSize; i += CommitCount)
                {
                    context.Set <Example>().AddRange(data.Skip(i).Take(CommitCount));
                    context.SaveChanges();
                }
            }
        }
Beispiel #7
0
        private static ExampleContext AddToContext(ExampleContext context, Example record, int count, int commitCount, bool recreateContext)
        {
            context.Example.Add(record);

            if (count % commitCount == 0)
            {
                context.SaveChanges();
                if (recreateContext)
                {
                    context.Dispose();
                    context = new ExampleContext();
                    context.Configuration.AutoDetectChangesEnabled = false;
                }
            }

            return(context);
        }
Beispiel #8
0
        private static void PersistDataUsingSqlBulkCopy(IEnumerable <Example> data)
        {
            using (var context = new ExampleContext())
            {
                const SqlBulkCopyOptions options = SqlBulkCopyOptions.CheckConstraints |
                                                   SqlBulkCopyOptions.KeepNulls |
                                                   SqlBulkCopyOptions.KeepIdentity;

                var inputData = new DataTable();

                var columns = context.GetColumns <Example>().ToList();

                foreach (var column in columns)
                {
                    inputData.Columns.Add(column.Item1, column.Item2);
                }

                foreach (var record in data)
                {
                    var row = inputData.NewRow();
                    foreach (var column in columns)
                    {
                        row[column.Item1] = typeof(Example).GetProperty(column.Item1).GetValue(record);
                    }
                    inputData.Rows.Add(row);
                }

                using (var tx = new TransactionScope())
                {
                    using (var bcp = new SqlBulkCopy(context.Database.Connection.ConnectionString, options))
                    {
                        bcp.BatchSize            = 2500;
                        bcp.DestinationTableName = context.GetTableName <Example>();

                        bcp.WriteToServer(inputData);
                    }

                    tx.Complete();
                }
            }
        }
Beispiel #9
0
        private static void RunAddhocPersist(IEnumerable <Example> data, int commitCount, bool recreateContext)
        {
            ExampleContext context = null;

            try
            {
                context = new ExampleContext();
                context.Configuration.AutoDetectChangesEnabled = false;

                var count = 0;
                foreach (var record in data)
                {
                    count++;
                    context = AddToContext(context, record, count, commitCount, recreateContext);
                }
            }
            finally
            {
                if (context != null)
                {
                    context.Dispose();
                }
            }
        }