Beispiel #1
0
        /// <summary>
        /// 根据数据源名称获得相应的DBHelper
        /// 若缓存中有则直接返回        ///
        /// </summary>
        /// <param name="dsName">data source name(lowcase)</param>
        /// <returns></returns>
        public static IDBHelper GetHelper(string dsName)
        {
            //If Null, init data source list first;
            if (DataSourceList == null)
            {
                //默认使用DBHelper.config,这里可以按需求修改为默认使用App.config
                XmlConfigurator.Configure("DBHelper.config");
            }
            if (string.IsNullOrEmpty(dsName))
            {
                dsName = "default";
            }
            dsName = dsName.ToLower();//配置文件中dsName要小写
            if (DataSourceList.ContainsKey(dsName))
            {
                //实例化
                DataSourceConfig dsConfig       = DataSourceList[dsName];
                string[]         classNameArray = dsConfig.dialectClass.Split(new char[] { ':', '-' });
                string           className      = classNameArray[1];
                string           assemblyName   = classNameArray[0];
                Type             type           = null;
                if (string.IsNullOrEmpty(dsConfig.dialectClass))
                {
                    throw new ArgumentNullException("配置文件错误:请检查Dialect配置");
                }
                type = Assembly.Load(assemblyName).GetType(className, true);
                IDBHelper instance = Activator.CreateInstance(type, dsConfig.Parameters) as IDBHelper;

                return(instance);
            }
            else
            {
                throw new Exception("Not found data source [" + dsName + "], please check config file.");
            }
        }