/// <summary> /// 加载数据库节点 /// </summary> private static void LoadDatabases() { LoadDatabasesFromConnectionStrings(); if (SqlMapping.ExistDatabase(CoreDatabaseDBName)) { LoadDatabasesFromConfig(); } }
/// <summary> /// 加载配置节中的数据库节点 /// </summary> private static void LoadDatabasesFromConnectionStrings() { var databases = new List <DatabaseConfig>(ConfigurationManager.ConnectionStrings.Count); foreach (ConnectionStringSettings connInfo in ConfigurationManager.ConnectionStrings) { var dbConfig = new DatabaseConfig { ConfigName = connInfo.Name, ConnectionString = connInfo.ConnectionString, DBType = GetDatabaseTypeFromConfig(connInfo.Name, connInfo.ProviderName), ProviderName = connInfo.ProviderName }; databases.Add(dbConfig); } SqlMapping.AppendDatabases(databases); }
/// <summary> /// /// </summary> /// <param name="filePath"></param> /// <param name="filePattern"></param> private static void LoadSqlModules(string filePath, string filePattern) { var sqlModules = new Dictionary <string, SqlModule>(); var moduleMap = new Dictionary <string, SqlModule>(4); var sqlWraps = new List <SqlWrap>(16); var basePath = AppDomain.CurrentDomain.RelativeSearchPath; if (string.IsNullOrEmpty(basePath)) { basePath = AppDomain.CurrentDomain.BaseDirectory; } if (basePath.EndsWith(@"\") == false) { basePath = basePath + @"\"; } var sqlFiles = Directory.GetFiles(string.Format("{0}{1}", basePath, filePath), filePattern, SearchOption.AllDirectories); foreach (var sqlFile in sqlFiles) { var sqlMapXml = new XmlDocument(); sqlMapXml.Load(sqlFile); var nsmgr = new XmlNamespaceManager(sqlMapXml.NameTable); nsmgr.AddNamespace("sql", "http://m2sa.net/Schema/SqlMapping"); var moduleNodes = sqlMapXml.DocumentElement.SelectNodes("sql:module", nsmgr); if (null == moduleNodes) { continue; } foreach (XmlNode moduleNode in moduleNodes) { var moduleName = moduleNode.Attributes["moduleName"].InnerText; var namespaceAttr = moduleNode.Attributes["namespace"]; var namespaceText = namespaceAttr == null ? null : namespaceAttr.InnerText; var moduleKey = string.IsNullOrEmpty(namespaceText) ? moduleName.ToLower() : string.Concat(namespaceText, SqlMapping.ModuleKeySeparator, moduleName).ToLower(); SqlModule sqlModule = null; if (false == sqlModules.ContainsKey(moduleKey)) { sqlModules.Add(moduleKey, new SqlModule() { ModuleName = moduleName, Namespace = namespaceText }); } sqlModule = sqlModules[moduleKey]; var dbNameAttr = moduleNode.Attributes["dbName"]; if (null != dbNameAttr) { sqlModule.DbName = dbNameAttr.InnerText; } if (false == sqlModules.ContainsKey(moduleKey)) { sqlModules.Add(moduleKey, sqlModule); } var sqlMapElementes = moduleNode.SelectNodes("sql:sqlWrap", nsmgr); if (null != sqlMapElementes) { foreach (XmlNode element in sqlMapElementes) { var sqlWrap = ConvertToSql(element, sqlModule); sqlWraps.Add(sqlWrap); sqlModule.AddSqlWrap(sqlWrap); } } } } SqlMapping.AppendSqlModules(sqlModules); }