EF6不会回滚事务中的所有更改

时间:2015-03-21 18:43:03

标签: transactions entity-framework-6 rollback

我的理解是,除非调用transaction.Commit,否则应在事务范围内回滚所有操作。为什么Corleone最终没有破产?

using (var ctx = new BankDbContext()) {
using (var transaction = ctx.Database.BeginTransaction()) {
    try {
        var corleone = new BankAccount { Name = "Corleone", Balance = 100000M };
        ctx.Accounts.Add(corleone);
        ctx.SaveChanges();
        Debug.Assert(corleone.Balance == 100000M);

        corleone.Balance += 100000M;
        ctx.SaveChanges();
        Debug.Assert(corleone.Balance == 200000M);

        throw new Exception("money laundering!");
        transaction.Commit();

    } catch (Exception e) {
        transaction.Rollback();
        Debug.Assert(!ctx.Accounts.Any(x => x.Name == "Corleone"));
    }
}}

0 个答案:

没有答案