获取导致异常的查询

时间:2013-12-05 10:48:45

标签: c# mysql entity-framework

我正在创建一个自动更新数据库结构的应用程序,这是数据库没有数据的情况。我们称之为 UpdateApp 。该应用程序由另一个使用EntityFramework访问 MySql 服务器的应用程序调用。此应用程序是 MainApp 。因为执行更新过程需要很长时间,所以主要的想法是在 MainApp 中出现错误(例如没有表或没有定义字段,......)时调用更新结构。

然后,我想确保我的 UpdateApp 已成功更新数据库。因此,我希望在更新之前让查询在 MainApp 中导致该错误并再次运行它。我尝试运行debug来查找异常对象中是否有任何字段包含查询,但仍无法找到任何内容。

try {
    using (DbContext ctx = ContextManager.CreateContext()) {
        // Do something, for example, get value from database
    }
} catch (EntityException ex) {
    if (ex.InnerException is MySqlException) {
        // 1. Handle update structure, call the UpdateApp here
        // 2. Try to get the query and run it again <= I get stuck here
    }
}

1 个答案:

答案 0 :(得分:1)

假设MySqlException的工作方式与SqlException相同,则无法通过例外转到SqlCommand。但是你应该做的是重新运行失败的整个操作吗?像这样:

using (DbContext ctx = ContextManager.CreateContext())
{
   try
   {
      DoSomethingForExampleGetValueFromDatabase(DbContext ctx)
   }
   catch (EntityException ex)
   {
       if (ex.InnerException is MySqlException) 
       {
           // 1. Handle update structure, call the UpdateApp here
           DoSomethingForExampleGetValueFromDatabase(DbContext ctx)
       }
   }
}

private method DoSomethingForExampleGetValueFromDatabase(DbContext ctx)
{
}

参考文献:

Obtain the Query/CommandText that caused a SQLException