C# ASP MVC 4 MySQL,故障处理事务错误
我的环境/应用程序:Ubuntux64 Mono xsp4 mysqlstrict_ASP.NET MVC4 Elmah上的所有_表 我正在尝试使用ADO.NET并将请求包装到事务中。我有一个表,其中一列是数据类型integer。我尝试插入2个整数,然后插入一个无效的数据类型。我的目标是让事务在尝试插入无效数据时回滚。mysql服务器在尝试从mysql工作台执行sql命令时抛出错误 我在提交、回滚和关闭代码行上设置了断点。点击提交行,点击关闭行。但是,服务器返回500 errorYSOD和sql异常,但我的异常处理不会捕获错误并回滚事务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
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行抛出的;而不是在事务提交时。是否删除抛出单行?