gpt4 book ai didi

c# - 使用 SubmitChanges 创建 LINQ 事务

转载 作者:行者123 更新时间:2023-11-30 15:06:46 25 4
gpt4 key购买 nike

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

如果我在第一个 InsertOnSubmit 之后立即使用另一个 SubmitChanges(),它不会失去事务的概念吗?

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();

最佳答案

您可以使用 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()
}

如果在调用 scope.Complete() 之前抛出异常,则整个过程将回滚。

关于c# - 使用 SubmitChanges 创建 LINQ 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com