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

BUG:代码生成时,如果是实体是 Tenant 库需要用到主库里的树型表(比如部门信息),会出现打不到实体的异常。这里最好查了完Tenant库找不到对应的表,再到主库找一下。起码保证了代码能生成出来。

yzp 2 лет назад
Родитель
Сommit
d42dfd7020
1 измененных файлов с 13 добавлено и 3 удалено
  1. 13 3
      Admin.NET/Admin.NET.Core/Service/CodeGen/CustomViewEngine.cs

+ 13 - 3
Admin.NET/Admin.NET.Core/Service/CodeGen/CustomViewEngine.cs

@@ -1,4 +1,4 @@
-// 麻省理工学院许可证
+// 麻省理工学院许可证
 //
 // 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司  联系电话/微信:18020030720  QQ:515096995
 //
@@ -68,8 +68,18 @@ public class CustomViewEngine : ViewEngineModel
         var provider = _db.AsTenant().GetConnectionScope(ConfigId != SqlSugarConst.ConfigId ? ConfigId : SqlSugarConst.ConfigId);
 
         // 获取实体类型属性
-        var entityType = provider.DbMaintenance.GetTableInfoList().FirstOrDefault(u => u.Name == tableName);
-        if (entityType == null) return null;
+        var entityType = provider.DbMaintenance.GetTableInfoList().FirstOrDefault(u => u.Name == tableName);
+
+        // 因为ConfigId的表通常也会用到主库的表来做连接,所以这里如果在ConfigId中找不到实体也尝试一下在主库中查找
+        if (ConfigId == SqlSugarConst.ConfigId && entityType == null) return null;
+        if (ConfigId != SqlSugarConst.ConfigId)
+        {
+            provider = _db.AsTenant().GetConnectionScope(SqlSugarConst.ConfigId);
+            entityType = provider.DbMaintenance.GetTableInfoList().FirstOrDefault(u => u.Name == tableName);
+            if (entityType == null) return null;
+        }
+
+        
 
         // 按原始类型的顺序获取所有实体类型属性(不包含导航属性,会返回null)
         return provider.DbMaintenance.GetColumnInfosByTableName(entityType.Name).Select(u => new ColumnOuput