2017-09-18 5 views
1

通常のエンティティフレームワークでは、dbContext.Database.Exists()を使用してデータベース接続を確認できますが、Entity Frameworkコアには存在しません。 Entity Framework CoreのdbContext.Database.Exists()の代替は何ですか?Entity Frameworkコアでデータベースへの接続を確認する方法は?

+0

接続状態を確認していますか? –

+0

私は、接続文字列が有効で、データベースに正常に接続できるかどうかをチェックしたいだけです。 –

+0

接続状況でStatusプロパティを確認できます –

答えて

3

DatabaseFacadeクラス(DbContext.Databaseプロパティのタイプ)のクラスは現在公開されていません(Existsメソッドを公開しています)。

ただし、対応するEF6メソッドと同等のものは、EFコアIRelationalDatabaseCreatorサービスによって提供されます。内部的にするときに使用される(

using Microsoft.EntityFrameworkCore.Infrastructure; 
using Microsoft.EntityFrameworkCore.Storage; 

public static class DatabaseFacadeExtensions 
{ 
    public static bool Exists(this DatabaseFacade source) 
    { 
     return source.GetService<IRelationalDatabaseCreator>().Exists(); 
    } 
} 

しかし Existsメソッドは、データベース接続を確認することを意図していなかったことに注意してくださいではなく、よりデータベースを作成する必要があるかどうかを確認してください:あなたはこのようなカスタム拡張メソッドでそれを公開することができます EnsureCreatedMigrateなどのメソッドを呼び出します)。

+0

データベースの正常性をテストするにはどうすればよいと思いますか?ロードバランサのヘルスチェックに実装しようとしています。 – ArcadeRenegade

+1

どのようにa: await _context.Database.ExecuteSqlCommandAsync( "SELECT 1"); – ArcadeRenegade

+0

@ArcadeRenegade私は正確に言うことはできません。私は(さらに別の)カスタム(拡張)メソッドを作成し、その実装で遊んでいます - 私は 'OpenConnection' /' CloseConnection'コールのペアのように思います。 –

関連する問題