Pārlūkot izejas kodu

加入等待数据库连接就绪,避免初始化数据库报错

Cyrus Zhou 9 mēneši atpakaļ
vecāks
revīzija
9be7af9ebd
1 mainītis faili ar 28 papildinājumiem un 0 dzēšanām
  1. 28 0
      Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

+ 28 - 0
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

@@ -368,6 +368,31 @@ public static class SqlSugarSetup
         Console.WriteLine($"初始化视图 {dbProvider.CurrentConnectionConfig.DbType} - {dbProvider.CurrentConnectionConfig.ConfigId} 总耗时:{totalWatch.ElapsedMilliseconds:N0} ms");
     }
 
+    /// <summary>
+    /// 等待数据库就绪
+    /// </summary>
+    /// <param name="dbProvider"></param>
+    private static void WaitForDatabaseReady(SqlSugarScopeProvider dbProvider)
+    {
+        do
+        {
+            try
+            {
+                if (dbProvider.Ado.Connection.State != ConnectionState.Open)
+                    dbProvider.Ado.Connection.Open();
+
+                // 如果连接成功,直接返回
+                Log.Information("数据库连接成功。");
+                return;
+            }
+            catch (Exception ex)
+            {
+                Log.Warning($"数据库尚未就绪,等待中... 错误:{ex.Message}");
+                Thread.Sleep(1000);
+            }
+        } while (true);
+    }
+
     /// <summary>
     /// 初始化数据库
     /// </summary>
@@ -377,6 +402,9 @@ public static class SqlSugarSetup
     {
         var dbProvider = db.GetConnectionScope(config.ConfigId);
 
+        // 等待数据库连接就绪
+        WaitForDatabaseReady(dbProvider);
+
         // 初始化数据库
         if (config.DbSettings.EnableInitDb)
         {