/// <summary> /// Cria um provider. /// </summary> /// <param name="name">Nome do provider.</param> /// <param name="connectionString"></param> /// <returns>Instancia do provider.</returns> public static IProviderConfiguration CreateProviderConfiguration(string name, string connectionString) { if (_providersConfigurationConstructors.ContainsKey(name)) { if (string.IsNullOrEmpty(connectionString)) { throw new GDAException("ConnectionString is null"); } ConstructorInfo ci = _providersConfigurationConstructors[name] as ConstructorInfo; try { IProviderConfiguration instance = (IProviderConfiguration)ci.Invoke(new object[] { connectionString }); if (GDAOperations.GlobalProviderConfigurationLoad != null) { GDAOperations.GlobalProviderConfigurationLoad(instance, new ProviderConfigurationLoadArgs(instance)); } return(instance); } catch (TargetInvocationException ex) { throw ex.InnerException; } } else { throw new GDAException(String.Format("Info about name {0} not found.", name)); } }
/// <summary> /// Obtem o <see cref="IProviderConfiguration"/> com base no nome. /// </summary> /// <param name="name"></param> /// <returns></returns> public static IProviderConfiguration GetProviderConfiguration(string name) { LoadConfiguration(); if (!_providerConfiguration.ContainsKey(name)) { IProviderConfiguration instance = null; if (!_providersConfigurationInfo.ContainsKey(name)) { throw new GDAException("ProviderConfiguration {0} not found.", name); } ProviderConfigurationInfo pci = (ProviderConfigurationInfo)_providersConfigurationInfo[name]; if (pci.ProviderName == null) { throw new GDAException("Not found provider name in ProviderConfiguration {0}", name); } if (_providersConfigurationConstructors.ContainsKey(pci.ProviderName)) { if (pci.ConnectionString == null || pci.ConnectionString == "") { throw new GDAException("ConnectionString is null"); } ConstructorInfo ci = _providersConfigurationConstructors[pci.ProviderName] as ConstructorInfo; try { instance = (IProviderConfiguration)ci.Invoke(new object[] { pci.ConnectionString }); instance.Dialect = pci.Dialect; _providerConfiguration[name] = instance; } catch (TargetInvocationException ex) { throw ex.InnerException; } } else { throw new GDAException(String.Format("Info about name {0} not found.", name)); } if (GDAOperations.GlobalProviderConfigurationLoad != null) { GDAOperations.GlobalProviderConfigurationLoad(instance, new ProviderConfigurationLoadArgs(instance)); } } return(_providerConfiguration[name] as IProviderConfiguration); }