【问题标题】:C# Winforms how can I test for SQL connection when using EF6?C# Winforms 使用 EF6 时如何测试 SQL 连接?
【发布时间】:2016-01-04 17:27:07
【问题描述】:

我正在使用 Entity Framework 6 作为我的 C# Winforms 应用程序的一部分。我的底层数据库是 SQL Server Express 2014。

我正在尝试通过这样做来测试数据库是否存在:

    MyEntity me = new MyEntity()

    // Try and open the connection, if unable to, show an error message and exit
    try
    {
        me.Database.Connection.Open();
    }
    catch (SqlException ex)
    {
        MessageBox.Show("Unable to connect to database!\n\nError message:\n" + ex.Message, "Unable to connect to Database", MessageBoxButtons.OK, MessageBoxIcon.Error);
        Application.Exit();
    }

我目前在表单的“加载”事件中有这个,但我知道这不起作用,因为消息泵尚未启动。

我的问题是,如果数据库没有运行,我最早可以退出(优雅地)多长时间?

【问题讨论】:

  • 将其放入Shown() 事件中也不起作用。
  • 你的意思是你没有看到 MessageBox 因为你退出了你的应用程序?
  • 抱歉,不,我的意思是我看到了消息框,但我的程序继续执行而不是退出。

标签: c# sql-server winforms entity-framework-6


【解决方案1】:

当捕获异常并显示 MessageBox 时,您至少应该留出一些时间以便能够阅读该消息。

使用以下代码将阻止应用程序关闭,直到您点击“确定”。

if (MessageBox.Show("Error message:\n" + ex.Message, "Unable to connect to database!",
                MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
{
     Application.Exit();
}

【讨论】:

  • 对不起,我不够清楚,我看到了消息框,但我的程序在Application.Exit() 调用之后继续执行。
  • 您可能还没有运行该应用程序,您可以尝试退出环境,尽管这更适用于控制台应用程序。 System.Environment.Exit(0); 您可以使用不同的退出代码,看看this
【解决方案2】:

如果您只需要显示一个消息框,那么我会在您的主窗体创建之前这样做:

public static void Main(string[] args) 
{
    // Test database connection...
    if noConnection
    {
        return;
    }

    // Start the application.
    Application.Run(new Form1());
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多