Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JonathanMagnan/d1eadcc815d4a4af8c397e16e98ab32e to your computer and use it in GitHub Desktop.
Save JonathanMagnan/d1eadcc815d4a4af8c397e16e98ab32e to your computer and use it in GitHub Desktop.
using (var ctx = new CustomerContext())
{
foreach(var line in lines)
{
var customer = new Customer();
// ...code...
// DetectChanges is invoked every time you call Add
ctx.Customers.Add(customer);
}
ctx.SaveChanges();
}
// 1. CREATE batchSize variable
int batchSize = 1000;
var ctx = new CustomerContext();
for (int i = 0; i < lines.Count; i++)
{
// 2. CALL SaveChanges before creating a new batch
if (i != 0 && i%batchSize == 0)
{
ctx.SaveChanges();
ctx = new CustomerContext();
}
var customer = new Customer();
// ...code...
ctx.Customers.Add(customer);
}
// 3. CALL SaveChanges
ctx.SaveChanges();
// 4. Done!
using (var ctx = new CustomerContext())
{
// 1. CREATE a list
List<Customer> customers = new List<Customer>();
foreach(var line in lines)
{
var customer = new Customer();
// ...code...
// 2. ADD entity to the list
customers.Add(customer);
}
// 3. USE AddRange with the list
ctx.Customers.AddRange(customers);
// 4. SaveChanges
ctx.SaveChanges();
// 5. Done!
}
using (var ctx = new CustomerContext())
{
// 1. SET AutoDetectChangesEnabled = false
ctx.Configuration.AutoDetectChangesEnabled = false;
foreach(var line in lines)
{
var customer = new Customer();
// ...code...
ctx.Customers.Add(customer);
}
// 2. CALL DetectChanges before SaveChanges
ctx.ChangeTracker.DetectChanges();
// 3. SaveChanges
ctx.SaveChanges();
// 4. Done!
}
using (var ctx = new EF6.CustomerContext())
{
for(int i = 0; i < lines.Count; i++)
{
ctx.Customers.Add(customer);
}
}
internal virtual void DetectChanges()
{
IList<EntityEntry> entityEntriesForDetectChanges = this.GetEntityEntriesForDetectChanges();
if ((entityEntriesForDetectChanges != null) && this.TransactionManager.BeginDetectChanges())
{
try
{
DetectChangesInNavigationProperties(entityEntriesForDetectChanges);
DetectChangesInScalarAndComplexProperties(entityEntriesForDetectChanges);
DetectChangesInForeignKeys(entityEntriesForDetectChanges);
this.DetectConflicts(entityEntriesForDetectChanges);
this.TransactionManager.BeginAlignChanges();
this.AlignChangesInRelationships(entityEntriesForDetectChanges);
}
finally
{
this.TransactionManager.EndAlignChanges();
this.TransactionManager.EndDetectChanges();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment