C# ASP MVC 4 MySQL,故障处理事务错误

C# ASP MVC 4 MySQL,故障处理事务错误,c#,mysql,asp.net,asp.net-mvc-4,mono,C#,Mysql,Asp.net,Asp.net Mvc 4,Mono,我的环境/应用程序:Ubuntux64 Mono xsp4 mysqlstrict_ASP.NET MVC4 Elmah上的所有_表 我正在尝试使用ADO.NET并将请求包装到事务中。我有一个表,其中一列是数据类型integer。我尝试插入2个整数,然后插入一个无效的数据类型。我的目标是让事务在尝试插入无效数据时回滚。mysql服务器在尝试从mysql工作台执行sql命令时抛出错误 我在提交、回滚和关闭代码行上设置了断点。点击提交行,点击关闭行。但是,服务器返回500 errorYSOD和sql

我的环境/应用程序:Ubuntux64 Mono xsp4 mysqlstrict_ASP.NET MVC4 Elmah上的所有_表

我正在尝试使用ADO.NET并将请求包装到事务中。我有一个表,其中一列是数据类型integer。我尝试插入2个整数,然后插入一个无效的数据类型。我的目标是让事务在尝试插入无效数据时回滚。mysql服务器在尝试从mysql工作台执行sql命令时抛出错误

我在提交、回滚和关闭代码行上设置了断点。点击提交行,点击关闭行。但是,服务器返回500 errorYSOD和sql异常,但我的异常处理不会捕获错误并回滚事务

public class BaseController : Controller
{
    private MySqlConnection _connection;
    private MySqlTransaction _transaction;

    protected override void OnActionExecuting (ActionExecutingContext filterContext)
    {
        _connection = new MySqlConnection (ConfigurationManager.ConnectionStrings["myconnstringname"].ConnectionString);
        _connection.Open ();
        _transaction = _connection.BeginTransaction ();

        base.OnActionExecuting (filterContext);
    }

    protected override void OnActionExecuted (ActionExecutedContext filterContext)
    {
        try
        {
            _transaction.Commit ();
        }
        catch(Exception ex)
        {
            _transaction.Rollback();
            throw ex;
        }
        finally
        {
            _connection.Close ();
        }

        base.OnActionExecuted (filterContext);
    }

    protected MySqlCommand GetCommand(string commandText)
    {
        return new MySqlCommand (commandText, _connection, _transaction);
    }
}

public class HomeController : BaseController
{
    public ActionResult Index ()
    {
        var cmd = GetCommand ("insert into testing select 1;");
        cmd.ExecuteNonQuery ();

        cmd = GetCommand ("insert into testing select 2;");
        cmd.ExecuteNonQuery ();

        cmd = GetCommand ("insert into testing select 'grgregre';");
        cmd.ExecuteNonQuery ();

        return Content ("");
    }
}

解决了问题。我打了这个。显然,异常是在cmd.ExecuteNonQuery行抛出的;而不是在事务提交时。

是否删除抛出单行?