/// <summary> /// 初始化配置 /// </summary> /// <param name="xml">xml</param> public static void Initlize(XElement xml) { if (xml == null || xml.Name.LocalName.ToLower() != DATABASE.ToLower()) { logger.LogError("DbModelContextManager.Initlize.Error,本地没有数据库配置信息"); return; } XElement dbRoot = xml; XAttribute refFile = dbRoot.Attribute(REFFILE); XElement dataBaseInfo = null; XElement sqlMap = null; if (refFile == null || refFile.Value == "false") { // 和grant.config在一个配置文件中,也有可能是zk里面拉过来的 dataBaseInfo = dbRoot.Element(DATABASEINFO); } else { // 单独的配置文件 string dbFile = dbRoot.Attribute(DATABASEINFO)?.Value?.Trim(); if (string.IsNullOrEmpty(dbFile)) { logger.LogError($"数据库配置不正确,你指定了RefFile=true,所以需要提供{DATABASEINFO}"); return; } if (dbFile.ToLower().StartsWith("http://")) { string dbPath = string.Empty; try { string downloadPath = Path.Combine(Directory.GetCurrentDirectory(), "temp"); if (!Directory.Exists(downloadPath)) { Directory.CreateDirectory(downloadPath); } dbPath = Path.Combine(downloadPath, "database.config"); using (var webClient = new WebClient()) { var dataBytes = webClient.DownloadData(dbFile); //保存下载的远端配置文件 var configStr = Encoding.UTF8.GetString(dataBytes); using (var fileWriter = File.CreateText(dbPath)) { fileWriter.Write(configStr); } } } catch (Exception e) { throw new Exception($"下载数据库配置database.config异常:{dbFile}", e); } dbFile = dbPath; } dataBaseInfo = GetDataBase(dbFile); } BulidDataBaseInfo(dataBaseInfo); SqlMapManager.Initlize(GetSqlMap()); }
/// <summary> /// 根据dbContext的名称和sqlKey获取sql语句 /// </summary> /// <param name="dbContextName">dbContextName</param> /// <param name="sqlKey">sqlKey</param> /// <returns>string</returns> internal static string GetSql(string dbContextName, string sqlKey) { return(SqlMapManager.GetSql(dbContextName, sqlKey)); }