Một tùy chọn khác là gói tất cả các lệnh gọi Linq2Sql của bạn trong một TransactionScope (). Điều này sẽ buộc tất cả chúng chạy trong cùng một kết nối.
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();
}
// ...
Mặc dù, nếu bạn đang cố gắng làm điều gì đó như:
context.ExecuteCommand("SET IDENTITY_INSERT MyTable ON");
context.MyTable.InsertOnSubmit(myTableObject)
context.SubmitChanges()
context.ExecuteCommand("SET IDENTITY_INSERT MyTable OFF");
bạn có thể sẽ gặp phải các vấn đề khác, đặc biệt nếu cột nhận dạng có thuộc tính IsDbGenerated được đặt thành true. Lệnh SQL được tạo bởi Linq2Sql sẽ không biết bao gồm cột và giá trị nhận dạng.