当前位置:  开发笔记 > 编程语言 > 正文

实体框架(6)事务与单个和多个SaveChanges()调用之间的区别是什么

如何解决《实体框架(6)事务与单个和多个SaveChanges()调用之间的区别是什么》经验,为你挑选了0个好方法。

我想知道在这三种方式之间在同一数据库上下文中执行事务的实际差异是什么:

1)使用一个单独的多个操作SaveChanges(),而不显式使用sql事务

using (TestDbContext db = new TestDbContext())
{
    // first operation
    // second operation
    db.SaveChanges();
}

2)SaveChanges()使用sql事务,使用一个单独的多个操作

using (TestDbContext db = new TestDbContext())
using (DbContextTransaction trans = db.Database.BeginTransaction())
{
     // operation 1
     // operation 2
     db.SaveChanges();    
     trans.commit();
}

3)SaveChanges()使用sql事务进行多个多个操作

using (TestDbContext db = new TestDbContext())
using (DbContextTransaction trans = db.BeginTransaction())
{
     // operation 1
     db.SaveChanges();    
     // operation 2
     db.SaveChanges();

     trans.commit();
}

在(2)和(3)中,如果commit()应该实际执行对数据库的请求的sql查询,是否真的不同,比如保存每个操作的更改或保存所有操作的更改?

如果(1)也可以允许在同一个数据库上下文中安全地执行多个操作,那么手动启动事务的主要用途是什么?我说我们可以手动提供try/catch块来回滚事务,如果发生了不好的事情,但AFAIK,SaveChanges()也会自动覆盖它,至少是SQLServer.

**更新:另一件事是:我应该将数据库上下文和事务变量设置为类级别,还是应该只包含方法本地?

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有