我正在创建一个自动更新数据库结构的应用程序,这是数据库没有数据的情况。我们称之为 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
}
}
答案 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)
{
}
参考文献: