CustomViewEngine.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. namespace Admin.NET.Core.Service;
  2. public class CustomViewEngine : ViewEngineModel
  3. {
  4. private readonly SqlSugarRepository<SysCodeGen> _sysCodeGenRep; // 代码生成器仓储
  5. public CustomViewEngine()
  6. {
  7. }
  8. public CustomViewEngine(SqlSugarRepository<SysCodeGen> sysCodeGenRep)
  9. {
  10. _sysCodeGenRep = sysCodeGenRep;
  11. }
  12. /// <summary>
  13. /// 库定位器
  14. /// </summary>
  15. public string ConfigId { get; set; } = SqlSugarConst.ConfigId;
  16. public string AuthorName { get; set; }
  17. public string BusName { get; set; }
  18. public string NameSpace { get; set; }
  19. public string ClassName { get; set; }
  20. public string LowerClassName
  21. {
  22. get
  23. {
  24. return ClassName[..1].ToLower() + ClassName[1..]; // 首字母小写
  25. }
  26. }
  27. public List<CodeGenConfig> QueryWhetherList { get; set; }
  28. public List<CodeGenConfig> TableField { get; set; }
  29. public bool IsJoinTable { get; set; }
  30. public bool IsUpload { get; set; }
  31. private List<TableColumnOuput> ColumnList { get; set; }
  32. public string GetColumnNetType(object tbName, object colName)
  33. {
  34. ColumnList = GetColumnListByTableName(tbName.ToString());
  35. var col = ColumnList.Where(c => c.ColumnName == colName.ToString()).FirstOrDefault();
  36. //多库代码生成切库调用后切换回原库
  37. _sysCodeGenRep.Context.AsTenant().ChangeDatabase(SqlSugarConst.ConfigId);
  38. return col.NetType;
  39. }
  40. public List<TableColumnOuput> GetColumnListByTableName(string tableName)
  41. {
  42. //多库代码生成切换库
  43. if (ConfigId != SqlSugarConst.ConfigId)
  44. _sysCodeGenRep.Context.AsTenant().ChangeDatabase(ConfigId);
  45. // 获取实体类型属性
  46. var entityType = _sysCodeGenRep.Context.DbMaintenance.GetTableInfoList().FirstOrDefault(u => u.Name == tableName);
  47. if (entityType == null) return null;
  48. // 按原始类型的顺序获取所有实体类型属性(不包含导航属性,会返回null)
  49. return _sysCodeGenRep.Context.DbMaintenance.GetColumnInfosByTableName(entityType.Name).Select(u => new TableColumnOuput
  50. {
  51. ColumnName = u.DbColumnName,
  52. ColumnKey = u.IsPrimarykey.ToString(),
  53. DataType = u.DataType.ToString(),
  54. NetType = CodeGenUtil.ConvertDataType(u.DataType.ToString()),
  55. ColumnComment = u.ColumnDescription
  56. }).ToList();
  57. }
  58. }