当前位置: 首页 > 编程语言 > C#

如何回滚实体框架中的事务共享

时间:2023-04-10 11:56:21 C#

如何在实体框架中回滚事务string[]usersToAdd=newstring[]{"asd","asdert","gasdff6"};using(Entitiescontext=newEntities()){foreach(stringuserinusersToAdd){context.AddToUsers(newUser{Name=user});}尝试{context.SaveChanges();//抛出异常:用户'gasdff6'已经存在。}catch(Exceptione){//回滚所有更改,包括前两个用户。或者这可以自动完成,这意味着如果发生错误,所有更改都不会提交更改。是的?好的,我创建了一个类似于问题中的示例应用程序,然后我检查了数据库并且没有添加任何用户。结论:ObjectContext.SaveChange它自动成为一个事务。注意:我相信如果执行sprocs等,将需要事务。我相信(但我不是EF专家)直到调用context.SaveChanges才开始事务。我希望该调用的异常自动回滚它启动的任何事务。备选方案(如果您想控制事务)[来自J.LermanO'Reilly的“编程实体框架”,第618]使用(vartransaction=newSystem.Transactions.TransactionScope()){交易完成();context.AcceptAllChanges();}catch(OptimisticConcurrencyExceptione){//处理异常上下文.SaveChanges();以上就是C#学习教程:EntityFramework中如何回滚事务分享的所有内容,如果对大家有用,需要详细了解C#学习教程,希望大家多加关注——布尔保存=假;使用(vartransaction=newSystem.Transactions.TransactionScope()){try{context.SaveChanges();已保存=真;}catch(OptimisticConcurrencyExceptione){//处理异常context.SaveChanges();}finally{if(saved){transaction.Complete();context.AcceptAllChanges();}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: