60

エンティティ フレームワークを介して MYSQL データベースに接続するアプリがあります。100% 完璧に動作しますが、アプリの起動時にデータベースへの接続をテストする小さなコードを追加したいと思います。

データベースに対して小さなコマンドを実行して例外をキャッチするだけのアイデアがありましたが、問題がある場合 (たとえば、App.Config が見つからない、またはデータベース サーバーがダウンしている)、アプリはこのコードを実行してからスローするのに膨大な時間がかかります。例外(〜1分)。これは接続タイムアウトなどが原因だと思いますが、そのようなプロパティをいじって無駄にしました。

どこに行くべきかについて、誰かが何かアイデアを手伝ってくれるでしょうか?

4

7 に答える 7

58

DB接続が有効かどうかを確認したいだけですか? もしそうなら、

using (DatabaseContext dbContext = new DatabaseContext())
{
     dbContext.Database.Exists();
}

http://msdn.microsoft.com/en-us/library/gg696617(v=vs.103).aspx

サーバーマシン、DBサーバーまたはWebサービスサーバーが稼働しているかどうかを確認するには、これを試してください:

public PingReply Send( string hostNameOrAddress )

http://msdn.microsoft.com/en-us/library/7hzczzed.aspx

于 2013-10-06T16:40:25.343 に答える
47

@Danilo Bredaが指摘した解決策は、 DbContext.Database.Connection.Open() を呼び出すことです

EF6 でテストされています。

私の実装:

    public static bool CheckConnection()
    {
        try
        {
            MyContext.Database.Connection.Open();
            MyContext.Database.Connection.Close();
        }
        catch(SqlException)
        {
            return false;
        }
        return true;
    }
于 2015-03-07T15:39:44.350 に答える