示例#1
0
        /// <summary>
        /// 加载数据库节点
        /// </summary>
        private static void LoadDatabases()
        {
            LoadDatabasesFromConnectionStrings();

            if (SqlMapping.ExistDatabase(CoreDatabaseDBName))
            {
                LoadDatabasesFromConfig();
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }