소스 검색

fix: 😀修复表结构初始化存在已移除的必填字段时,导致增改数据报不能为null的问题

喵你个旺呀 1 년 전
부모
커밋
2c8ea01593
1개의 변경된 파일10개의 추가작업 그리고 0개의 파일을 삭제
  1. 10 0
      Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

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

@@ -363,6 +363,16 @@ public static class SqlSugarSetup
             var taskList = entityTypes.Select(entityType => Task.Run(() =>
             var taskList = entityTypes.Select(entityType => Task.Run(() =>
             {
             {
                 Console.WriteLine($"创建表 {entityType, -64} ({config.ConfigId} - {Interlocked.Increment(ref count):D003}/{sum:D003})");
                 Console.WriteLine($"创建表 {entityType, -64} ({config.ConfigId} - {Interlocked.Increment(ref count):D003}/{sum:D003})");
+
+                // 将不存在实体中的字段改为可空
+                var entityInfo = dbProvider.EntityMaintenance.GetEntityInfo(entityType);
+                var dbColumnInfos = dbProvider.DbMaintenance.GetColumnInfosByTableName(entityInfo.DbTableName) ?? new();
+                foreach (var dbColumnInfo in dbColumnInfos.Where(dbColumnInfo => entityInfo.Columns.All(u => u.DbColumnName != dbColumnInfo.DbColumnName)))
+                {
+                    dbColumnInfo.IsNullable = true;
+                    dbProvider.DbMaintenance.UpdateColumn(entityInfo.DbTableName, dbColumnInfo);
+                }
+
                 if (entityType.GetCustomAttribute<SplitTableAttribute>() == null)
                 if (entityType.GetCustomAttribute<SplitTableAttribute>() == null)
                     dbProvider.CodeFirst.InitTables(entityType);
                     dbProvider.CodeFirst.InitTables(entityType);
                 else
                 else