Batch Updates EF Code First

Batch Updates EF Code First

Postby erdiay » Mon 26 Dec 2011 10:46


We are using EF 4.1 and dotConnect for Oracle 6.5.
In out project, we need to execute large number of insert operations(about 30.000) and it takes about 30min to execute.
We've already enabled BatchUpdates, disabled AutoDetectChangesEnabled but nothing changed.

Our model is like that:
Code: Select all
public abstract class BatchOrder
        public virtual ICollection Orders { get; set; }

and the usage is:
Code: Select all
var sw = Stopwatch.StartNew();

Is BatchUpdates not compatible with inner collections?
What I mean is, in our case batchorder has about 30.000 orders and when we add batchorder to repository, 30.000 prepare&execute commands are executed on the db. What I expected is that, there would be a single prepare&execute statement for 30.000 order.
Any help will be appreciated.
Posts: 1
Joined: Mon 26 Dec 2011 10:18

Postby Shalex » Thu 29 Dec 2011 13:19

The limitations of Batch Updates are listed here:
1. Please take into account that entities should not have StoreGenerated=Identity/Computed columns. Probably, your Order class has Identity primary key (Code-First approach). Identity also can be set implicitly by System.Data.Entity.ModelConfiguration.Conventions.StoreGeneratedIdentityKeyConvention (by default, it is included into DbModelBuilder's collection).
2. Usage of TransactionScope turns off Batch Updates.
3. Default value of BatchSize is 30. You can increase the size.
Devart Team
Posts: 7369
Joined: Thu 14 Aug 2008 12:44

Return to dotConnect for Oracle