// Admin.NET 项目的版æƒã€å•†æ ‡ã€ä¸“利和其他相关æƒåˆ©å‡å—ç›¸åº”æ³•å¾‹æ³•è§„çš„ä¿æŠ¤ã€‚ä½¿ç”¨æœ¬é¡¹ç›®åº”éµå®ˆç›¸å…³æ³•律法规和许å¯è¯çš„è¦æ±‚。 // // 本项目主è¦éµå¾ª MIT 许å¯è¯å’Œ Apache 许å¯è¯ï¼ˆç‰ˆæœ¬ 2.0)进行分å‘和使用。许å¯è¯ä½äºŽæºä»£ç æ ‘æ ¹ç›®å½•ä¸çš„ LICENSE-MIT å’Œ LICENSE-APACHE 文件。 // // ä¸å¾—利用本项目从事å±å®³å›½å®¶å®‰å…¨ã€æ‰°ä¹±ç¤¾ä¼šç§©åºã€ä¾µçŠ¯ä»–äººåˆæ³•æƒç›Šç‰æ³•å¾‹æ³•è§„ç¦æ¢çš„æ´»åЍï¼ä»»ä½•基于本项目二次开å‘è€Œäº§ç”Ÿçš„ä¸€åˆ‡æ³•å¾‹çº çº·å’Œè´£ä»»ï¼Œæˆ‘ä»¬ä¸æ‰¿æ‹…ä»»ä½•è´£ä»»ï¼ namespace Admin.NET.Core.Service; public class CustomViewEngine : ViewEngineModel { private readonly ISqlSugarClient _db; public CustomViewEngine() { } public CustomViewEngine(ISqlSugarClient db) { _db = db; } /// <summary> /// 库定ä½å™¨ /// </summary> public string ConfigId { get; set; } = SqlSugarConst.MainConfigId; public string AuthorName { get; set; } public string BusName { get; set; } public string NameSpace { get; set; } public string ClassName { get; set; } public string ProjectLastName { get; set; } public string LowerClassName { get { return ClassName[..1].ToLower() + ClassName[1..]; // 首嗿¯å°å†™ } } public string PagePath { get; set; } = "main"; public bool IsJoinTable { get; set; } public bool IsUpload { get; set; } public string PrintType { get; set; } public string PrintName { get; set; } public List<CodeGenConfig> QueryWhetherList { get; set; } public List<CodeGenConfig> TableField { get; set; } private List<ColumnOuput> ColumnList { get; set; } public string GetColumnNetType(object tbName, object colName) { if (tbName == null || colName == null) return null; var config = App.GetOptions<DbConnectionOptions>().ConnectionConfigs.FirstOrDefault(u => u.ConfigId.ToString() == ConfigId); ColumnList = GetColumnListByTableName(tbName.ToString()); var col = ColumnList.Where(c => (config.DbSettings.EnableUnderLine ? CodeGenUtil.CamelColumnName(c.ColumnName, Array.Empty<string>()) : c.ColumnName) == colName.ToString()).FirstOrDefault(); return col.NetType; } public List<ColumnOuput> GetColumnListByTableName(string tableName) { // 多库代ç 生æˆåˆ‡æ¢åº“ var provider = _db.AsTenant().GetConnectionScope(ConfigId != SqlSugarConst.MainConfigId ? ConfigId : SqlSugarConst.MainConfigId); // 获å–实体类型属性 var entityType = provider.DbMaintenance.GetTableInfoList().FirstOrDefault(u => u.Name == tableName); // å› ä¸ºConfigId的表通常也会用到主库的表æ¥åšè¿žæŽ¥ï¼Œæ‰€ä»¥è¿™é‡Œå¦‚果在ConfigId䏿‰¾ä¸åˆ°å®žä½“也å°è¯•ä¸€ä¸‹åœ¨ä¸»åº“ä¸æŸ¥æ‰¾ if (ConfigId == SqlSugarConst.MainConfigId && entityType == null) return null; if (ConfigId != SqlSugarConst.MainConfigId) { provider = _db.AsTenant().GetConnectionScope(SqlSugarConst.MainConfigId); 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 { ColumnName = u.DbColumnName, ColumnKey = u.IsPrimarykey.ToString(), DataType = u.DataType.ToString(), NetType = CodeGenUtil.ConvertDataType(u, provider.CurrentConnectionConfig.DbType), ColumnComment = u.ColumnDescription }).ToList(); } }