2017-07-11 3 views
0

Mit den Entity Frameworks 'DbConetxt Ich versuche zu prüfen, ob die Datenbank mit der Abfrage unten existiert.EF postgre überprüfen, ob die Datenbank existiert

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

Das Problem ist, dass das Ergebnis immer -1 ist. Ich verwende postgresql und die Abfrage wird ordnungsgemäß ausgeführt, wenn ich es im Pgadmin UI Query-Tool ausprobiere. Ich habe versucht zu googeln, aber vergeblich. Jede Hilfe wird geschätzt.

Hinweis: Der Kontext hat keinen Datenbanknamen, aber alle anderen Datenbankverbindungsinformationen sind erforderlich.

+0

Haben Sie bereits überprüft, ob 'dbContext.Database.Exists()' in Ihrem Fall funktioniert, bevor Sie mit der Ausführung einiger mehr oder weniger komplizierter Abfragen beginnen? – grek40

+0

Hi @ grek40 Ich kann die Datenbank mit dem Befehl ** ExecuteSqlCommandAsync ** erstellen. aber bevor ich die Datenbank erstellte, wollte ich prüfen, ob sie existiert. Wie ich schon sagte, funktioniert Database.Exists() möglicherweise nicht, da der Kontext keinen Datenbanknamen hat. – Gagan

+0

Wie wäre es mit 'SqlQuery ' mit '" SELECT COUNT (*) FROM ... "' anstelle der 'ExecuteSqlCommand'? – grek40

Antwort

0

Bitte versuchen Sie es mit diesem Befehl. Da die Groß- und Kleinschreibung von Datenbanknamen berücksichtigt wird, verwende ich Kleinbuchstaben. Das sollte Ihnen True/False zurückgeben.

+0

danke für die Idee, ich habe versucht, aber es ist das gleiche Ergebnis. – Gagan

Verwandte Themen