触发异常如何回滚 [英] Trigger exception how to roll back

查看:88
本文介绍了触发异常如何回滚的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,

    我正在使用实体框架6.0。我正在从代码逻辑中添加一个实体,基于sql将触发一些触发器。触发器有一些例外。所以我需要回滚交易。但是连接变为空。
无法回滚。请提示如何在触发器异常时回滚。

     I am using entity framework 6.0. I am adding a entity from code logic based on that back sql will fire some triggers. The triggers have some exception. So I need to roll back the transaction. But the connection become null. Could not able to rollback. please suggest how to roll back when trigger have exception.

谢谢

推荐答案

您好Deepthi Ki 跑,

您可以使用 DbContextTransaction   ;抛出异常时回滚事务。像这样:

You could use DbContextTransaction to rollback the transaction when throw the exception. like this:

using (var context = new BloggingContext()) 
            { 
                using (var dbContextTransaction = context.Database.BeginTransaction()) 
                { 
                    try 
                    { 
                        context.Database.ExecuteSqlCommand( 
                            @"UPDATE Blogs SET Rating = 5" + 
                                " WHERE Name LIKE '%Entity Framework%'" 
                            ); 
 
                        var query = context.Posts.Where(p => p.Blog.Rating >= 5); 
                        foreach (var post in query) 
                        { 
                            post.Title += "[Cool Blog]"; 
                        } 
 
                        context.SaveChanges(); 
 
                        dbContextTransaction.Commit(); 
                    } 
                    catch (Exception) 
                    { 
                        dbContextTransaction.Rollback(); 
                    } 
                } 
            } 




欲了解更多信息,请参阅:


For more information, please refer to:

https:/ /msdn.microsoft.com/en-us/library/dn456843(v=vs.113).aspx

祝你好运,

Cole Wu


这篇关于触发异常如何回滚的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆