コード例 #1
0
        /// <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());
        }
コード例 #2
0
 /// <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));
 }