En anden mulighed er at pakke alle dine Linq2Sql-kald i en TransactionScope(). Dette burde tvinge dem alle til at køre i samme forbindelse.
using System.Transactions; // Be sure to add a reference to System.Transactions.dll to your project.
// ... in a method somewhere ...
using (System.Transaction.TransactionScope trans = new TransactionScope())
{
using(YourDataContext context = new YourDataContext())
{
context.ExecuteCommand("SET IDENTITY_INSERT MyTable ON");
context.ExecuteCommand("yourInsertCommand");
context.ExecuteCommand("SET IDENTITY_INSERT MyTable OFF");
}
trans.Complete();
}
// ...
Selvom du prøver at gøre noget som:
context.ExecuteCommand("SET IDENTITY_INSERT MyTable ON");
context.MyTable.InsertOnSubmit(myTableObject)
context.SubmitChanges()
context.ExecuteCommand("SET IDENTITY_INSERT MyTable OFF");
du vil sandsynligvis støde på andre problemer, især hvis identitetskolonnen har IsDbGenerated-attributten sat til sand. SQL-kommandoen genereret af Linq2Sql vil ikke vide at inkludere identitetskolonnen og værdien.