Jelajahi Sumber

😁增加[增量表更新特性],可以指定单表更新,不必要每次初始化所有表以提高速度

zuohuaijun 2 tahun lalu
induk
melakukan
7fc606d61f

+ 3 - 1
Admin.NET/Admin.NET.Application/Configuration/Database.json

@@ -9,16 +9,18 @@
                 "ConnectionString": "DataSource=./Admin.NET.db", // 库连接字符串
                 "EnableInitDb": true, // 启用库表初始化
                 "EnableInitSeed": true, // 启用种子初始化
+                "EnableIncreTable": false, // 启用增量表更新
                 "EnableDiffLog": false, // 启用库表差异日志
                 "EnableUnderLine": false // 启用驼峰转下划线
             }
-            // 其他数据库配置(可以配置多个)
+            //// 其他数据库配置(可以配置多个)
             //{
             //    "ConfigId": "test",
             //    "DbType": "Sqlite",
             //    "ConnectionString": "DataSource=./test.db", // 库连接字符串
             //    "EnableInitDb": true, // 启用库表初始化
             //    "EnableInitSeed": true, // 启用种子初始化
+            //    "EnableIncreTable": false, // 启用增量表更新
             //    "EnableDiffLog": false, // 启用库表差异日志
             //    "EnableUnderLine": false // 启用驼峰转下划线
             //}

+ 19 - 0
Admin.NET/Admin.NET.Core/Attribute/IncreTableAttribute.cs

@@ -0,0 +1,19 @@
+// 麻省理工学院许可证
+//
+// 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司  联系电话/微信:18020030720  QQ:515096995
+//
+// 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
+//
+// 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
+// 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
+
+namespace Admin.NET.Core;
+
+/// <summary>
+/// 增量表特性
+/// </summary>
+[SuppressSniffer]
+[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
+public class IncreTableAttribute : Attribute
+{
+}

+ 5 - 0
Admin.NET/Admin.NET.Core/Option/DbConnectionOptions.cs

@@ -41,6 +41,11 @@ public sealed class DbConnectionConfig : ConnectionConfig
     /// </summary>
     public bool EnableInitSeed { get; set; }
 
+    /// <summary>
+    /// 启用增量表更新
+    /// </summary>
+    public bool EnableIncreTable { get; set; }
+
     /// <summary>
     /// 启用库表差异日志
     /// </summary>

+ 2 - 1
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

@@ -256,7 +256,8 @@ public static class SqlSugarSetup
             dbProvider.DbMaintenance.CreateDatabase();
 
         // 获取所有实体表-初始化表结构
-        var entityTypes = App.EffectiveTypes.Where(u => !u.IsInterface && !u.IsAbstract && u.IsClass && u.IsDefined(typeof(SugarTable), false)).ToList();
+        var entityTypes = App.EffectiveTypes.Where(u => !u.IsInterface && !u.IsAbstract && u.IsClass && u.IsDefined(typeof(SugarTable), false))
+            .WhereIF(config.EnableIncreTable, u => u.IsDefined(typeof(IncreTableAttribute), false)).ToList();
         if (!entityTypes.Any()) return;
         foreach (var entityType in entityTypes)
         {