EntityFramework Core的Transaction特性怎么用?给我个例子
EntityFramework Core的[Transaction]特性可以用来标记一个方法需要在事务中运行。当方法被调用时,如果当前没有事务,则会创建一个新的事务,并在方法结束时提交或回滚事务。
以下是一个使用[Transaction]特性的例子:
public class MyService
{
private readonly MyDbContext _dbContext;
public MyService(MyDbContext dbContext)
{
_dbContext = dbContext;
}
[Transaction]
public void TransferMoney(int fromAccountId, int toAccountId, decimal amount)
{
var fromAccount = _dbContext.Accounts.Find(fromAccountId);
var toAccount = _dbContext.Accounts.Find(toAccountId);
if (fromAccount.Balance < amount)
{
throw new InvalidOperationException("Insufficient funds");
}
fromAccount.Balance -= amount;
toAccount.Balance += amount;
_dbContext.SaveChanges();
}
}
在上面的例子中,TransferMoney方法使用[Transaction]特性来标记需要在事务中运行。当方法被调用时,如果当前没有事务,则会创建一个新的事务,并在方法结束时提交或回滚事务。如果在方法执行过程中抛出异常,则事务会自动回滚。
注意:[Transaction]特性只能用于public方法。如果要在private方法中使用事务,请使用DbContext.Database.BeginTransaction方法手动创建事务
原文地址: http://www.cveoy.top/t/topic/fdd0 著作权归作者所有。请勿转载和采集!