测试实体框架数据库连接我有一个通过实体框架连接到MYSQL数据库的应用程序。它100%完美地工作,但我想添加一小段代码来测试应用程序启动时与数据库的连接。我只想简单地向数据库运行一个小命令并捕获任何异常,但如果出现问题(例如App.Config丢失或数据库服务器关闭),应用程序需要花费大量时间来运行此代码然后抛出异常(约1分钟)。我想这是由于连接超时等原因造成的,但我摆弄了这些属性无济于事。任何人都可以提供关于去哪里的任何想法吗?您只想查看数据库连接是否有效。如果是这样,请查看使用(DatabaseContextdbContext=newDatabaseContext()){dbContext.Database.Exists();}http://msdn.microsoft.com/en-us/library/gg696617(v=vs.103)。aspxforEF5https://msdn.microsoft.com/en-us/library/gg696617(v=vs.113).aspxforEF6并检查服务器计算机、数据库服务器或Web服务服务器是否已启动请尝试以下操作:publicPingReplySend(stringhostNameOrAddress)http://msdn.microsoft.com/en-us/library/7hzczzed.aspx@Daniloloko指出的解决方案是调用DbContext.Database.Connection.Open()它使用EF6进行测试。我的实现:publicstaticboolCheckConnection(){try{MyContext.Database.Connection.Open();MyContext.Database.Connection.Close();}catch(SqlException){返回假;}返回真;我为我的项目放置了这段代码:privateboolTestConnectionEF(){using(vardb=newSistemaContext()){try{db.Database.Connection.Open();如果(db.Database.Connection.State==ConnectionState.Open){Console.WriteLine(@"INFO:ConnectionString:"+db.Database.Connection.ConnectionString+"nDataBase:"+db.Database.Connection.Database+“n数据源:”+db.Database.Connection.DataSource+“n服务器版本:”+db.Database.Connection.ServerVersion+“n超时:”+db.Database.Connection.ConnectionTimeout);db.Database.Connection.Close();返回真;}返回假;}catch(Exceptionex){抛出ex;我使用@Sandor的答案并使用扩展方法来处理EntityFrameworkCore。这是代码:使用Microsoft.EntityFrameworkCore;使用System.Data.Common;命名空间TerminalInventory{publicstaticclassExtensionMethods{publicstaticboolTestConnection(thisDbContextcontext){DbConnectionconn=context.Database.GetDbConnection();试试{conn.Open();//检查数据库连接returntrue;}赶上{返回假;}}}}现在只需要调用:有用,需要了解更多C#学习教程,希望大家多多关注——if(!context.TestConnection()){logger.LogInformation("Nodatabaseconnection.Checksettings.json中的连接字符串。{0}",configuration["connectionString"]);返回;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
