gpt4 book ai didi

c# - 如何在 Entity Framework 中使用 LINQ-to-SQL 回滚事务?

转载 作者:行者123 更新时间:2023-11-30 14:23:07 24 4
gpt4 key购买 nike

这是我的代码:

TransactionScope trans = new TransactionScope();
dbDataContext db = new dbDataContext()
// did some insert
var user = new User();
user.ID = 1;
user.Name = "Nick";

db.Users.Add(user);

db.SubmitChanges();
trans.Complete();

现在,如果在保存更改时发生错误,我该如何回滚事务?

最佳答案

您可以通过两种方式在 Entity Framework 中使用事务。一个使用 TransactionScope,另一个使用数据库事务。

要使用数据库事务,请使用以下代码示例:

using (dbDataContext db = new dbDataContext())
using (var dbContextTransaction = db.Database.BeginTransaction())
{
try
{
var user = new User(){ID = 1, Name = "Nick"};
db.Users.Add(user);
db.SaveChanges();
dbContextTransaction.Commit();
}
catch (Exception)
{
dbContextTransaction.Rollback();
}
}

下面是 EF 的 TransactionScope 的示例:

using (TransactionScope tranScope = new TransactionScope())
using (dbDataContext db = new dbDataContext())
{
try
{
var user = new User(){ID = 1, Name = "Nick"};
db.Users.Add(user);
db.SaveChanges();
tranScope.Complete();
}
catch(Exception ex){}
}

如您所见,对于 TransactionScope,您不需要调用任何回滚方法。如果您不调用 Complete() 方法,则事务不会被提交并在被释放之前自动回滚。

关于c# - 如何在 Entity Framework 中使用 LINQ-to-SQL 回滚事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46628560/

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