2017-07-11 30 views
0

使用實體框架'DbConetxt我試圖檢查數據庫是否存在下面的查詢。EF postgre檢查數據庫是否存在

public async Task<bool> CheckIfExistsAsync(DbContext context) 
{ 
    var result = await context.Database.ExecuteSqlCommandAsync("SELECT 1 from pg_database WHERE datname='CPNewDB'"); 
    return result == 1; 
} 

的問題是,結果總是-1。我使用postgresql,當我在Pgadmin UI查詢工具中試用時,查詢執行得很好。我曾嘗試使用谷歌搜索,但徒勞無功。任何幫助將不勝感激。

注意:上下文沒有數據庫名稱,但具有所有其他數據庫連接信息。

+0

你已經檢查是否'dbContext.Database.Exists()'工作在你的情況下,開始執行一些或多或少的複雜查詢之前? – grek40

+0

Hi @ grek40我可以用** ExecuteSqlCommandAsync **命令創建數據庫。但在創建數據庫之前,我想檢查它是否存在。還像我說的那樣,Database.Exists()可能不起作用,因爲上下文沒有數據庫名稱。 – Gagan

+0

如何用'SELECT COUNT(*)FROM ...「而不是'ExecuteSqlCommand'使用'SqlQuery '? – grek40

回答

0

請嘗試使用此命令。由於數據庫名稱區分大小寫,因此我將其設置爲小寫。這應返回你真/假

select exists(
SELECT datname FROM pg_catalog.pg_database WHERE lower(datname) = lower('dbname') 
); 
+0

感謝您的想法,我試過但它的結果相同。 – Gagan