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方法手动创建事务

EntityFramework Core的Transaction特性怎么用?给我个例子

原文地址: http://www.cveoy.top/t/topic/fdd0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录