/// <summary> /// /// </summary> public static void Instantiate( Config.DataAccessSection config, ProviderCollection providers, Type providerType) { foreach (ProviderSettings settings in config.Providers) { providers.Add(Instantiate(config, settings, providerType)); } }
/// <summary> /// Tries the setup default provider. /// </summary> /// <param name="providerName">Name of the provider.</param> /// <param name="config">The config.</param> private static void TrySetupDefaultProvider(string providerName, Config.DataAccessSection config) { // try to setup from implemented set of providers switch (providerName.Trim()) { #if FB_BUILD case "FbDataProvider": _Provider = new Providers.FbDataProvider(); break; #endif case "MsOracleDataProvider": _Provider = new Providers.MsOracleDataProvider(); break; case "MySqlDataProvider": _Provider = new Providers.MySqlDataProvider(); break; case "OdbcDataProvider": _Provider = new Providers.OdbcDataProvider(); break; case "OleDbDataProvider": _Provider = new Providers.OleDbDataProvider(); break; case "OracleDataProvider": _Provider = new Providers.OracleDataProvider(); break; case "SqlDataProvider": _Provider = new Providers.SqlDataProvider(); break; default: // not found exit; return; } NameValueCollection __providerConfig = new NameValueCollection(); __providerConfig["connectionName"] = config.DefaultConnectionName; __providerConfig["defaultCommandType"] = config.DefaultCommandType; //__providerConfig["defaultRollbackBehaviour"] = config.DefaultRollbackBehaviour; _Provider.Initialize(config.DefaultProvider, __providerConfig); // add it to collection _Providers.Add(_Provider); }
/// <summary> /// /// </summary> private static void Initialize() { if (_IsInitialized) { ThrowOnInitializeException(); } else { ThrowOnInitializeException(); lock (_SyncLock) { if (_IsInitialized) { ThrowOnInitializeException(); } else { System.Web.HttpContext context = System.Web.HttpContext.Current; _TraceEnabled = (context != null && context.Trace.IsEnabled) ? true : false; Config.DataAccessSection __section = (Config.DataAccessSection) ConfigurationManager.GetSection(Config.DataAccessSection.SectionName); _Providers = new DataProviderCollection(); string __defaultProvider; // will not throw exception, but apply the general default provider rule if (__section == null) { __section = new Config.DataAccessSection(); } else { ProvidersHelper.Instantiate( __section, _Providers, typeof(DataProvider)); } // set default provider __defaultProvider = __section.DefaultProvider; _Provider = _Providers[__defaultProvider]; if (_Provider == null) { // try to setup from implemented set of providers TrySetupDefaultProvider(__defaultProvider, __section); } ThrowOnNullDefaultProvider(); _IsInitialized = true; } } } }
/// <summary> /// /// </summary> /// <returns></returns> public static ProviderBase Instantiate( Config.DataAccessSection config, ProviderSettings settings, Type providerType) { ProviderBase __base = null; try { string __typeName = (settings.Type == null) ? null : settings.Type.Trim(); if (string.IsNullOrEmpty(__typeName)) { throw new ArgumentException("Provider doesn't have type name"); } Type __type = Type.GetType(__typeName); //ConfigUtil.GetType(text1, "type", settings); if (!providerType.IsAssignableFrom(__type)) { throw new ArgumentException(string.Format( "Provider must implement type {0}", providerType.ToString())); } __base = (ProviderBase)Activator.CreateInstance(__type); NameValueCollection __parameters = settings.Parameters; NameValueCollection __providerConfig = new NameValueCollection(__parameters.Count, StringComparer.InvariantCulture); foreach (string __param in __parameters) { __providerConfig[__param] = __parameters[__param]; } if (__providerConfig["connectionName"] == null) { __providerConfig["connectionName"] = config.DefaultConnectionName; } if (__providerConfig["defaultCommandType"] == null) { __providerConfig["defaultCommandType"] = config.DefaultCommandType; } //if (__providerConfig["defaultRollbackBehaviour"] == null) { // __providerConfig["defaultRollbackBehaviour"] = config.DefaultRollbackBehaviour; //} __base.Initialize(settings.Name, __providerConfig); } catch (Exception exception1) { if (exception1 is ConfigurationException) { throw; } throw new ConfigurationErrorsException(exception1.Message, settings.ElementInformation.Properties["type"].Source, settings.ElementInformation.Properties["type"].LineNumber); } return(__base); }