使用 SubmitChanges 创建 LINQ 事务

Vit*_*eis 3 c# linq transactions submitchanges linq-to-sql

所以,我正在尝试使用 LINQ to SQL 进行事务。我读到,如果我使用SubmitChanges(),它将创建一个事务并执行所有内容,如果出现异常,所有内容都将回滚。我需要使用 MULTIPLESubmitChanges()吗?我正在使用类似此代码的代码,但它不起作用,因为它没有在第一个表上保存任何数据..(我需要它的子表 ID)。

如果我SubmitChanges()在第一个权利之后使用另一个权利,InsertOnSubmit它会不会失去交易的想法?

myDataContext db = new myDataContext();

Process openProcess = new Process();

openProcess.Creation = DateTime.Now;
openProcess.Number = pNumber;

//Set to insert

db.Process.InsertOnSubmit(openProcess);

Product product = new Product();

product.Code = pCode;
product.Name = pName;
product.Process_Id = openProcess.Id;

//Submit all changes at once?

db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

Ben*_*son 5

您可以使用TransactionScope例如使整个事情变得跨社会

using (TransactionScope scope = new TransactionScope())
{
myDataContext db = new myDataContext();

Process openProcess = new Process();

openProcess.Creation = DateTime.Now;
openProcess.Number = pNumber;



db.Process.InsertOnSubmit(openProcess);
db.SubmitChanges();
//openProcess.Id will be populated

Product product = new Product();

product.Code = pCode;
product.Name = pName;
product.Process_Id = openProcess.Id;    

db.Products.InsertOnSubmit(product); // I assume you missed this step in your example
db.SubmitChanges();

scope.Complete()
}
Run Code Online (Sandbox Code Playgroud)

如果在scope.Complete()调用之前抛出异常,那么整个事情将被回滚。