AnyOne
AnyOne

Reputation: 931

Insert new entity to database with closed tracking change in LinqToSql

Datacontext throws "object tracking is not enabled for the current datacontext instance" exception when i try to add new entities to db as below.

db.Posts.InsertOnSubmit(new entity);

Enabling tracking change is not a solution for me because it is too slow when i have many insert operation.

What is solution in this case ?

Upvotes: 1

Views: 1436

Answers (2)

Pleun
Pleun

Reputation: 8920

You cannot have your cake and eat it too.

Depending on your database structure, you could consider using two datacontexts. One with changetracking enabled, one disabled.

However, you will still have one insert statement per record. That is just how linq-2-sql operates and there is no solution to that within l-2-s. You have to look into the SqlBulkCopy class for bulkinsertions.

Upvotes: 1

Jim Wooley
Jim Wooley

Reputation: 10408

Typically enabling and disabling object tracking simply wires up or ignores the change tracking event handlers. If you are trying to insert so many items that it becomes too slow when trying to wire up these events, you have a much bigger problem.

Remember, LINQ to SQL will issue a separate database request for each record you are adding. The network bottleneck here will surely be a bigger issue than just wiring up the change tracking events. LINQ to SQl isn't the best choice for bulk inserts. Consider using SSIS/Bulk Copy for that kind of operation.

Upvotes: 0

Related Questions