用EF操作数据库 对多张表操作是不是需要事务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用EF操作数据库 对多张表操作是不是需要事务相关的知识,希望对你有一定的参考价值。

用EF操作数据库 ,
1,对多张表进行操作,如果用的是同一个DB上下文,是否需要用事务,还是说DB上下文本身就有事务不需要了?
2,操作多表时,是每操作完一张表后SaveChanges()比较好还是,最后整体SaveChange()好 请全面回答,重点回答 1 问题

  对多张表进行操作是需要事务的。

  事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
参考技术A 1.同一个DB上下文本身就是事务的.

2.本身没有区别. 请根据业务需求决定.SaveChanges()时才会进行约束检查,发生异常会导致回滚.追问

如果同一个DB上下文本身有事务,那我每操作一完张表就SaveChanges()一次,如果在最后一张表,出异常,还能回滚吗

追答

回滚到前一个SaveChanges,多个表是同一个事物,请在最后SaveChanges.

本回答被提问者采纳

以上是关于用EF操作数据库 对多张表操作是不是需要事务的主要内容,如果未能解决你的问题,请参考以下文章

spring入门事务控制

django中怎么使用mysql数据库的事务

数据库之高级操作(视图触发器事务存储过程索引)

Oracle中事务的处理,比如要对表A操作,我先查询在更新,是不是需要将查询放在事务,求高手解答!

关于EF Core对中间表的先删除在增加错误

使用SQL的更新语句时,一次可以对几个表进行更新?