LINQ to SQL检查DB是否已关闭并记录为什么

时间:2014-05-13 15:17:04

标签: c# linq

在我的应用程序中,我希望能够检查与数据库的连接是否失败。如果是这样,我需要立即了解它。我可以尝试/捕获使用LINQ运行的第一个查询,但我觉得必须有更好的方法。假设我有以下代码:

        if (db.DatabaseExists())
        {
             //Do work
        }
        else
        {
            Logger.Error("DB DOWN");
        }

这有效并且更干净,但我无法记录数据库是否已关闭。知道LINQ很可能是一些我不知道的辅助函数可以告诉我它不能抛出异常而无法连接的原因。

1 个答案:

答案 0 :(得分:3)

您可以使用DataContext.Connection属性,尝试打开它,如果您收到异常,则记录异常,这将为您提供一些信息。 DataContext.DatabaseExists返回true / false但没有其他信息。你可以这样做:

try
{
     //Check if it is not already open
     DataContext.Connection.Open();
}
catch (SqlException sEx)
{
    //Log sEx
}
catch (Exception ex)
{
    // log ex
}
finally
{
    if (DataContext.Connection != null && DataContext.Connection.State == ConnectionState.Open)
    {
        DataContext.Connection.Close();
    }
}