/// <summary> /// Create a instance of the class <see cref="ConnectionStringFactory"/>. /// </summary> /// <param name="connStringCreator">a instance of the interface <see cref="IConnectionStringCreator"/></param> /// <returns>return a instance of the class <see cref="ConnectionStringFactory"/>.</returns> public static ConnectionStringFactory Create(IConnectionStringCreator connStringCreator) { AssertUtils.ArgumentNotNull(connStringCreator, "connStringCreator"); var connStringFactory = new ConnectionStringFactory(); logger.InfoFormat("[ConnectionStringFactory] Create ConnectionStrings by Creator:{0}", connStringCreator); connStringFactory.lstConnStrings = connStringCreator.CreateConnStrings(); return(connStringFactory); }
/// <summary> /// 初始连接字符串 /// </summary> public static void InitConnList() { lock (obj)//对象同步 许亚修改2014.3.14 { //获取连接字符串是否成功 bool getConnectionSuccess = false; //获取连接字符串次数 int getConnectionCounter = 0; while (!getConnectionSuccess && getConnectionCounter <= RETRY_COUNT) { try { Logger.InfoFormat("第{0}次获取连接字符串开始...", getConnectionCounter + 1); lock (DbListObj) { _lstConnStrings = ConnectionStringFactory.Create(ConfigConnStringCreator.Create()) .GetConnectionStrings(); if (_lstConnStrings.Count == 0) { throw new Exception("没有要使用的字符串.请检查配置文件"); } //日志 if (Logger.IsInfoEnabled) { var stringBuilder = new StringBuilder(); stringBuilder.Append(string.Format("ConnectionString初始化完成,共有数据库连接字符串:{0}个", _lstConnStrings.Count)); foreach (IConnectionString databaseModel in _lstConnStrings) { stringBuilder.AppendLine(databaseModel.ToString()); } Logger.Info(stringBuilder.ToString()); } } getConnectionSuccess = true; } catch (Exception ex) { Logger.Error(ex.Message, ex); Thread.Sleep(500); getConnectionCounter++; } } foreach (IConnectionString connString in _lstConnStrings) { try { if (!IsPlainText(connString.ConnectionString)) { connString.ConnectionString = DES.Decrypt3DES(connString.ConnectionString); } } catch (Exception ex) { Logger.Error("解密连接串失败:name:" + connString.Name + " message:" + ex.Message, ex); } if (!ConnStringCache.ContainsKey(connString.Name)) { ConnStringCache.Add(connString.Name, connString.ConnectionString); } if (!ProviderNameCache.ContainsKey(connString.Name)) { ProviderNameCache.Add(connString.Name, connString.ProviderName); } } } }