static DefaultConnectionString() { try { String path = DALBootstrap.GetConnectionLocatorPath(); if (String.IsNullOrEmpty(path)) { throw new Exception("ConnectionString file doesn't exist."); } rwLock.EnterWriteLock(); var collection = DALBootstrap.ConnectionStringKeys; if (collection != null && collection.Count > 0) { connectionStringCollection = getConnectionStrings(collection.AllKeys, path); } if (connectionStringCollection == null) { connectionStringCollection = new ConnectionStringSettingsCollection(); } rwLock.ExitWriteLock(); } catch { throw; } }
static DefaultConnectionString() { try { var collection = DALBootstrap.ConnectionStringKeys; if (collection == null || collection.Count < 1) { throw new DalException("Missing DataConnection.ConnectionStrings."); } //这里原来的意思是从一个固定的地址去根据逻辑数据库名(key)去读真实的连接字符串 String path = DALBootstrap.GetConnectionLocatorPath(); if (String.IsNullOrEmpty(path)) { //默认是从config文件里面去读取 connectionStringCollection = loadFronBootstrapConfig(collection); return; } //从指定的路径文件里面读取的 rwLock.EnterWriteLock(); connectionStringCollection = getConnectionStrings(collection.AllKeys, path); if (connectionStringCollection == null) { connectionStringCollection = new ConnectionStringSettingsCollection(); } rwLock.ExitWriteLock(); } catch { throw; } }
/// <summary> /// 构造初始化 /// </summary> /// <param name="logicDbName">逻辑数据库名</param> public BaseDao(String logicDbName) { if (String.IsNullOrEmpty(logicDbName)) { throw new DalException("Please specify databaseSet."); } LogicDbName = logicDbName; shardingStrategyLazy = new Lazy <IShardingStrategy>(() => DALBootstrap.GetShardingStrategy(logicDbName), true); }
private static IComparable getShardColumnValueByParameters(String logicDbName, IList <String> shardColumns, StatementParameterCollection parameters, Boolean quote = true) { IComparable shardColumnValue = null; if (shardColumns == null || shardColumns.Count == 0) { return(shardColumnValue); } if (parameters == null || parameters.Count == 0) { return(shardColumnValue); } DbDialect dbDialect = null; if (quote) { dbDialect = DbDialectFactory.Build(DALBootstrap.GetProviderType(logicDbName)); } IDictionary <String, StatementParameter> dict = new Dictionary <String, StatementParameter>(); foreach (var item in parameters) { String parameterName = item.Name; if (String.IsNullOrEmpty(parameterName)) { continue; } parameterName = parameterName.ToLower(); if (!dict.ContainsKey(parameterName)) { dict.Add(parameterName, item); } } foreach (var item in shardColumns) { String name = quote ? dbDialect.QuoteParameter(item.ToLower()) : item.ToLower(); if (dict.ContainsKey(name)) { shardColumnValue = dict[name].Value as IComparable; break; } } return(shardColumnValue); }
/// <summary> /// 获取方言DAO,请注意返回null的情况 /// </summary> /// <param name="logicDbName"></param> /// <returns>IDialectDao</returns> public static IDialectDao CreateDialectDao(String logicDbName) { return(DialectDaos.GetOrAdd(logicDbName, key => { var providerType = DALBootstrap.GetProviderType(logicDbName); switch (providerType) { case DatabaseProviderType.MySql: return new MySqlDialectDao(key); default: return null; } })); }
/// <summary> /// 获取HA对象 /// </summary> /// <param name="logicDbName"></param> /// <returns></returns> public static IHA GetInstance(String logicDbName) { var providerType = DALBootstrap.GetProviderType(logicDbName); switch (providerType) { case DatabaseProviderType.SqlServer: return(new SqlServerHA()); case DatabaseProviderType.MySql: return(new MySqlHA()); default: throw new NotImplementedException("Not supported."); } }