2017-09-18 1 views
1

일반 엔터티 프레임 워크에서 dbContext.Database.Exists()을 사용하여 데이터베이스 연결을 확인할 수 있지만 Entity Framework Core에는 없습니다. Entity Framework Core에서 dbContext.Database.Exists()의 대안은 무엇입니까?Entity Framework Core에서 데이터베이스 연결을 확인하는 방법은 무엇입니까?

+0

연결 상태를 확인 하시겠습니까? –

+0

연결 문자열의 유효성을 검사하고 데이터베이스에 성공적으로 연결할 수 있는지 확인하고 싶습니다. –

+0

연결 인스턴스 –

답변

3

DatabaseFacade 클래스 (이 유형은 DbContext.Database 속성 임)는 현재 Exists 메서드를 공개하지 않습니다 (현재까지 최신 EF Core 2.0까지).

그러나 해당 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 방법은 데이터베이스 연결을 확인하도록 적이 있습니다 만이 아닌 확인하십시오 :이 같은 사용자 정의 확장 메서드로 노출 될 수 있습니다 EnsureCreated, Migrate 등의 메소드를 호출합니다.

+0

에서 상태 속성을 확인할 수 있습니다. 데이터베이스 상태를 테스트하는 좋은 방법은 무엇이라고 생각하십니까? 로드 밸런서 상태 점검에 구현하려고합니다. – ArcadeRenegade

+1

어떨까요 : await _context.Database.ExecuteSqlCommandAsync ("SELECT 1"); – ArcadeRenegade

+0

@ArcadeRenegade 정확하게 말할 수는 없습니다. 나는 (또 다른) 커스텀 (확장) 메소드를 생성하고 구현과 함께 플레이 할 것이다. 나는'OpenConnection' /'CloseConnection' 호출 쌍과 비슷한 것을 상상한다. –

관련 문제