译第41节---EF6-事务

Posted talentzemin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了译第41节---EF6-事务相关的知识,希望对你有一定的参考价值。

原文:http://www.entityframeworktutorial.net/entityframework6/transaction-in-entity-framework.aspx

EF默认情况下,在执行SaveChanges()时,在事务中进行插入,更新或删除操作。

EF为每个操作启动新事务,并在操作完成时完成事务。

执行另一个此类操作时,将启动一个新的事务。

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

xecute multiple operations in a single transaction as shown below:

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使用在EF之外启动的事务。

以上是关于译第41节---EF6-事务的主要内容,如果未能解决你的问题,请参考以下文章

译第36节---基于代码迁移

译第3节--- 配置开发环境

译第26节---配置一对多关系

译第17节---数据注解-Column

译第7节---映射继承策略

译第24节---Fluent API - 属性映射