2017-09-18 62 views
1

在正常的實體框架中,我能夠使用dbContext.Database.Exists()檢查數據庫連接,但在Entity Framework Core中不存在。實體框架核心中的dbContext.Database.Exists()的替代選擇是什麼?如何檢查實體框架核心中的數據庫連接?

+0

你的意思是檢查連接狀態嗎? –

+0

我只想檢查我的連接字符串是否有效,並且它可以成功連接到數據庫。 –

+0

您可以檢查連接實例 –

回答

3

目前(到目前爲止最新的EF Core 2.0)DatabaseFacade類(這是DbContext.Database屬性的類型)並未公開Exists方法。

但是,相應的EF6方法由EF Core 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

a: await _context.Database.ExecuteSqlCommandAsync(「SELECT 1」); – ArcadeRenegade

+0

@ArcadeRenegade我不能說完全。我會創建(又一個)自定義(擴展)方法,並與實現一起玩 - 我將它想象成更像「OpenConnection」/「CloseConnection」調用對。 –

相關問題