Test d’une connexion à une firebase database Entity Framework

J’ai une application qui se connecte à une firebase database MYSQL via le framework d’entités. Cela fonctionne à 100% parfaitement, mais j’aimerais append un petit morceau de code qui testera la connexion à la firebase database au démarrage de l’application.

J’ai eu l’idée de simplement exécuter une petite commande dans la firebase database et de capturer les exceptions. Cependant, en cas de problème (par exemple, il manque App.Config ou le serveur de firebase database), l’application prend énormément de temps l’exception (~ 1 min). J’imagine que cela est dû aux délais d’attente de connexion, etc., mais j’ai sortingpoté ces propriétés en vain.

Quelqu’un pourrait-il nous aider avec des idées quant à l’endroit où aller?

Voulez-vous simplement savoir si la connexion à la firebase database est valide? Si oui, jetez un coup d’œil au

 using (DatabaseContext dbContext = new DatabaseContext()) { dbContext.Database.Exists(); } 

http://msdn.microsoft.com/en-us/library/gg696617(v=vs.103).aspx EF5 https://msdn.microsoft.com/en-us/library/gg696617(v=vs.113 ) .aspx pour EF6

et pour vérifier si un serveur, un serveur de firebase database ou un serveur de services Web est opérationnel, essayez ceci:

public PingReply Send( ssortingng hostNameOrAddress )

http://msdn.microsoft.com/en-us/library/7hzczzed.aspx

La solution indiquée par @Daniloloko consiste à appeler DbContext.Database.Connection.Open ()

Il est testé avec EF6.

Mon implémentation:

  public static bool CheckConnection() { try { MyContext.Database.Connection.Open(); MyContext.Database.Connection.Close(); } catch(SqlException) { return false; } return true; } 

J’utilise ce code pour mon projet:

 private bool TestConnectionEF() { using (var db = new SistemaContext()) { try { db.Database.Connection.Open(); if (db.Database.Connection.State == ConnectionState.Open) { Console.WriteLine(@"INFO: ConnectionSsortingng: " + db.Database.Connection.ConnectionSsortingng + "\n DataBase: " + db.Database.Connection.Database + "\n DataSource: " + db.Database.Connection.DataSource + "\n ServerVersion: " + db.Database.Connection.ServerVersion + "\n TimeOut: " + db.Database.Connection.ConnectionTimeout); db.Database.Connection.Close(); return true; } return false; } catch(Exception ex) { throw ex; } } } 

J’ai utilisé la réponse de @ Sandor et une méthode d’extension à utiliser avec EntityFramework Core.

Voici le code:

 using Microsoft.EntityFrameworkCore; using System.Data.Common; namespace TerminalInventory { public static class ExtensionMethods { public static bool TestConnection(this DbContext context) { DbConnection conn = context.Database.GetDbConnection(); try { conn.Open(); // Check the database connection return true; } catch { return false; } } } } 

Il ne rest plus qu’à appeler:

 if (!context.TestConnection()) { logger.LogInformation("No database connection. Check the connection ssortingng in settings.json. {0}", configuration["connectionSsortingng"]); return; }