internal AppConfig( ConnectionStringSettingsCollection connectionStrings, KeyValueConfigurationCollection appSettings, EntityFrameworkSection entityFrameworkSettings, ProviderServicesFactory providerServicesFactory = null) { this._connectionStrings = connectionStrings; this._appSettings = appSettings ?? new KeyValueConfigurationCollection(); this._entityFrameworkSettings = entityFrameworkSettings ?? new EntityFrameworkSection(); this._providerServicesFactory = providerServicesFactory ?? new ProviderServicesFactory(); this._providerServices = new Lazy <IList <NamedDbProviderService> >((Func <IList <NamedDbProviderService> >)(() => (IList <NamedDbProviderService>) this._entityFrameworkSettings.Providers.OfType <ProviderElement>().Select <ProviderElement, NamedDbProviderService>((Func <ProviderElement, NamedDbProviderService>)(e => new NamedDbProviderService(e.InvariantName, this._providerServicesFactory.GetInstance(e.ProviderTypeName, e.InvariantName)))).ToList <NamedDbProviderService>())); if (this._entityFrameworkSettings.DefaultConnectionFactory.ElementInformation.IsPresent) { this._defaultConnectionFactory = new Lazy <IDbConnectionFactory>((Func <IDbConnectionFactory>)(() => { DefaultConnectionFactoryElement connectionFactory = this._entityFrameworkSettings.DefaultConnectionFactory; try { return((IDbConnectionFactory)Activator.CreateInstance(connectionFactory.GetFactoryType(), connectionFactory.Parameters.GetTypedParameterValues())); } catch (Exception ex) { throw new InvalidOperationException(Strings.SetConnectionFactoryFromConfigFailed((object)connectionFactory.FactoryTypeName), ex); } }), true); } else { this._defaultConnectionFactory = this._defaultDefaultConnectionFactory; } }
internal AppConfig( ConnectionStringSettingsCollection connectionStrings, KeyValueConfigurationCollection appSettings, EntityFrameworkSection entityFrameworkSettings, ProviderServicesFactory providerServicesFactory = null) { DebugCheck.NotNull(connectionStrings); _connectionStrings = connectionStrings; _appSettings = appSettings ?? new KeyValueConfigurationCollection(); _entityFrameworkSettings = entityFrameworkSettings ?? new EntityFrameworkSection(); _providerServicesFactory = providerServicesFactory ?? new ProviderServicesFactory(); _providerServices = new Lazy <IList <NamedDbProviderService> >( () => _entityFrameworkSettings .Providers .OfType <ProviderElement>() .Select( e => new NamedDbProviderService( e.InvariantName, _providerServicesFactory.GetInstance(e.ProviderTypeName, e.InvariantName))) .ToList()); if (_entityFrameworkSettings.DefaultConnectionFactory.ElementInformation.IsPresent) { _defaultConnectionFactory = new Lazy <IDbConnectionFactory>( () => { var setting = _entityFrameworkSettings.DefaultConnectionFactory; try { var type = setting.GetFactoryType(); var args = setting.Parameters.GetTypedParameterValues(); return((IDbConnectionFactory)Activator.CreateInstance(type, args)); } catch (Exception ex) { throw new InvalidOperationException( Strings.SetConnectionFactoryFromConfigFailed(setting.FactoryTypeName), ex); } }, isThreadSafe: true); } else { _defaultConnectionFactory = _defaultDefaultConnectionFactory; } }