猿教程 Logo

EntityFramework事务支持

在执行SaveChanges()时,Entity Framework默认将Insert,Update或Delete操作包装在事务中。 EF为每个操作启动一个新事务,并在操作完成时完成事务。 当您执行另一个此类操作时,将启动一个新事务。

EF 6引入了database.BeginTransaction和Database.UseTransaction,以提供对事务的更多控制。 现在,您可以在单个事务中执行多个操作,如下所示:

using (System.Data.Entity.DbContextTransaction dbTran = context.Database.BeginTransaction( ))
    {
        try
        {
            Student std1 = new Student() { StudentName = "newstudent" };
            context.Students.Add(std1);
            context.Database.ExecuteSqlCommand(
                @"UPDATE Student SET StudentName = 'Edited Student Name'" +
                    " WHERE StudentID =1"
                );
            context.Students.Remove(std1);
            //saves all above operations within one transaction
            context.SaveChanges();
            //commit transaction
            dbTran.Commit();
        }
        catch (Exception ex)
        {
            //Rollback transaction if exception occurs
            dbTran.Rollback();
        }
    }

database.UseTransaction允许DbContext使用在Entity Framework之外启动的事务。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/entity/transaction-in-entity-framework.html