Просмотр исходного кода

BUG:种子数据的CreateTime和UpdateTime会更新成新新的时间

yzp 1 год назад
Родитель
Сommit
051d882270

+ 3 - 3
Admin.NET/Admin.NET.Core/Entity/EntityBase.cs

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
@@ -27,13 +27,13 @@ public abstract class EntityBase : EntityBaseId, IDeletedFilter
     /// <summary>
     /// 创建时间
     /// </summary>
-    [SugarColumn(ColumnDescription = "创建时间", IsNullable = true, IsOnlyIgnoreUpdate = true, InsertServerTime = true)]
+    [SugarColumn(ColumnDescription = "创建时间", IsNullable = true, IsOnlyIgnoreUpdate = true)]
     public virtual DateTime CreateTime { get; set; }
 
     /// <summary>
     /// 更新时间
     /// </summary>
-    [SugarColumn(ColumnDescription = "更新时间", IsOnlyIgnoreInsert = true, UpdateServerTime = true)]
+    [SugarColumn(ColumnDescription = "更新时间")]
     public virtual DateTime? UpdateTime { get; set; }
 
     /// <summary>

+ 16 - 3
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

@@ -165,6 +165,8 @@ public static class SqlSugarSetup
         // 数据审计
         db.Aop.DataExecuting = (oldValue, entityInfo) =>
         {
+            if (CreateingSeedData)
+                return;
             // 新增/插入
             if (entityInfo.OperationType == DataFilterType.InsertByObject)
             {
@@ -249,6 +251,9 @@ public static class SqlSugarSetup
         SqlSugarFilter.SetCustomEntityFilter(db);
     }
 
+    //正在创建种子数据
+    private static bool CreateingSeedData = false;
+
     /// <summary>
     /// 开启库表差异化日志
     /// </summary>
@@ -327,6 +332,7 @@ public static class SqlSugarSetup
         // 初始化种子数据
         if (config.SeedSettings.EnableInitSeed)
         {
+            CreateingSeedData = true;
             Log.Information($"初始化种子数据 {config.DbType} - {config.ConfigId}");
             var seedDataTypes = App.EffectiveTypes.Where(u => !u.IsInterface && !u.IsAbstract && u.IsClass && u.GetInterfaces().Any(i => i.HasImplementedRawGeneric(typeof(ISqlSugarEntitySeedData<>))))
                 .WhereIF(config.SeedSettings.EnableIncreSeed, u => u.IsDefined(typeof(IncreSeedAttribute), false))
@@ -358,7 +364,7 @@ public static class SqlSugarSetup
                 if (seedData == null) continue;
 
                 var entityInfo = dbProvider.EntityMaintenance.GetEntityInfo(entityType);
-                Console.WriteLine($"添加数据 {entityInfo.DbTableName} ({config.ConfigId} - {++count}/{sum})");
+                Console.WriteLine($"添加数据 {entityInfo.DbTableName} ({config.ConfigId} - {++count}/{sum},数据量:{seedData.Count()})");
 
                 if (entityType.GetCustomAttribute<SplitTableAttribute>(true) != null)
                 {
@@ -374,9 +380,15 @@ public static class SqlSugarSetup
                     {
                         // 按主键进行批量增加和更新
                         var storage = dbProvider.StorageableByObject(seedData.ToList()).ToStorage();
-                        storage.AsInsertable.ExecuteCommand();
+
+                        //要先修改再插入,否则就会更新了最新修改时间字段
                         if (seedType.GetCustomAttribute<IgnoreUpdateSeedAttribute>() == null) // 有忽略更新种子特性时则不更新
-                            storage.AsUpdateable.IgnoreColumns(entityInfo.Columns.Where(u => u.PropertyInfo.GetCustomAttribute<IgnoreUpdateSeedColumnAttribute>() != null).Select(u => u.PropertyName).ToArray()).ExecuteCommand();
+                        {
+                            int updateCnt = storage.AsUpdateable.IgnoreColumns(entityInfo.Columns.Where(u => u.PropertyInfo.GetCustomAttribute<IgnoreUpdateSeedColumnAttribute>() != null).Select(u => u.PropertyName).ToArray()).ExecuteCommand();
+                            Console.WriteLine($"  修改{updateCnt}/{seedData.Count()}条新记录");
+                        }
+                        int insertCnt = storage.AsInsertable.ExecuteCommand();
+                        Console.WriteLine($"  插入{insertCnt}/{seedData.Count()}条新记录");
                     }
                     else
                     {
@@ -386,6 +398,7 @@ public static class SqlSugarSetup
                     }
                 }
             }
+            CreateingSeedData = false;
         }
     }