Pilihan lain adalah untuk membungkus semua panggilan Linq2Sql Anda dalam TransactionScope(). Ini akan memaksa mereka semua untuk berjalan dalam koneksi yang sama.
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();
}
// ...
Meskipun, jika Anda mencoba melakukan sesuatu seperti:
context.ExecuteCommand("SET IDENTITY_INSERT MyTable ON");
context.MyTable.InsertOnSubmit(myTableObject)
context.SubmitChanges()
context.ExecuteCommand("SET IDENTITY_INSERT MyTable OFF");
Anda mungkin akan mengalami masalah lain, terutama jika kolom identitas memiliki atribut IsDbGenerated yang disetel ke true. Perintah SQL yang dihasilkan oleh Linq2Sql tidak akan tahu untuk menyertakan kolom identitas dan nilai.