/// <summary> /// Adds the specified provider. /// </summary> /// <param name="provider">The provider.</param> public void Add(NetTiersProvider provider) { if (provider == null) { throw new ArgumentNullException("provider"); } if (!(provider is NetTiersProvider)) { throw new ArgumentException("Invalid provider type", "provider"); } base.Add(provider); }
/// <summary> /// Fill a TList<Classes> From a DataReader. /// </summary> /// <param name="reader">Datareader</param> /// <param name="rows">The collection to fill</param> /// <param name="start">Row number at which to start reading, the first row is 0.</param> /// <param name="pageLength">number of rows.</param> /// <returns>a <see cref="TList<Classes>"/></returns> public static TList <Classes> Fill(IDataReader reader, TList <Classes> rows, int start, int pageLength) { NetTiersProvider currentProvider = DataRepository.Provider; bool useEntityFactory = currentProvider.UseEntityFactory; bool enableEntityTracking = currentProvider.EnableEntityTracking; LoadPolicy currentLoadPolicy = currentProvider.CurrentLoadPolicy; Type entityCreationFactoryType = currentProvider.EntityCreationalFactoryType; // advance to the starting row for (int i = 0; i < start; i++) { if (!reader.Read()) { return(rows); // not enough rows, just return } } for (int i = 0; i < pageLength; i++) { if (!reader.Read()) { break; // we are done } string key = null; School.Entities.Classes c = null; if (useEntityFactory) { key = new System.Text.StringBuilder("Classes") .Append("|").Append((System.Int32)reader[((int)ClassesColumn.Id - 1)]).ToString(); c = EntityManager.LocateOrCreate <Classes>( key.ToString(), // EntityTrackingKey "Classes", //Creational Type entityCreationFactoryType, //Factory used to create entity enableEntityTracking); // Track this entity? } else { c = new School.Entities.Classes(); } if (!enableEntityTracking || c.EntityState == EntityState.Added || (enableEntityTracking && ( (currentLoadPolicy == LoadPolicy.PreserveChanges && c.EntityState == EntityState.Unchanged) || (currentLoadPolicy == LoadPolicy.DiscardChanges && c.EntityState != EntityState.Unchanged) ) )) { c.SuppressEntityEvents = true; c.Id = (System.Int32)reader[((int)ClassesColumn.Id - 1)]; c.ClassNumber = (System.String)reader[((int)ClassesColumn.ClassNumber - 1)]; c.EntityTrackingKey = key; c.AcceptChanges(); c.SuppressEntityEvents = false; } rows.Add(c); } return(rows); }
/// <summary> /// Instantiates the configured providers based on the supplied connection string. /// </summary> private void LoadProviders() { DataRepository.LoadProviders(); // Avoid claiming lock if providers are already loaded if ( _providers == null ) { lock ( SyncRoot ) { // Do this again to make sure _provider is still null if ( _providers == null ) { // apply connection information to each provider for ( int i = 0; i < NetTiersSection.Providers.Count; i++ ) { NetTiersSection.Providers[i].Parameters["connectionStringName"] = _connectionStringName; // remove previous connection string, if any NetTiersSection.Providers[i].Parameters.Remove("connectionString"); if ( !String.IsNullOrEmpty(_connectionString) ) { NetTiersSection.Providers[i].Parameters["connectionString"] = _connectionString; } } // Load registered providers and point _provider to the default provider _providers = new NetTiersProviderCollection(); ProvidersHelper.InstantiateProviders(NetTiersSection.Providers, _providers, typeof(NetTiersProvider)); _provider = _providers[NetTiersSection.DefaultProvider]; } } } }
///<summary> /// Configuration based provider loading, will load the providers on first call. ///</summary> private static void LoadProviders() { // Avoid claiming lock if providers are already loaded if (_provider == null) { lock (SyncRoot) { // Do this again to make sure _provider is still null if (_provider == null) { // Load registered providers and point _provider to the default provider _providers = new NetTiersProviderCollection(); ProvidersHelper.InstantiateProviders(NetTiersSection.Providers, _providers, typeof(NetTiersProvider)); _provider = _providers[NetTiersSection.DefaultProvider]; if (_provider == null) { throw new ProviderException("Unable to load default NetTiersProvider"); } } } } }
/// <summary> /// Enables the DataRepository to programatically create and /// pass in a <c>NetTiersProvider</c> during runtime. /// </summary> /// <param name="provider">An instatiated NetTiersProvider.</param> /// <param name="setAsDefault">ability to set any valid provider as the default provider for the DataRepository.</param> public static void LoadProvider(NetTiersProvider provider, bool setAsDefault) { if (provider == null) throw new ArgumentNullException("provider"); if (_providers == null) { lock(SyncRoot) { if (_providers == null) _providers = new NetTiersProviderCollection(); } } if (_providers[provider.Name] == null) { lock (_providers.SyncRoot) { _providers.Add(provider); } } if (_provider == null || setAsDefault) { lock (SyncRoot) { if(_provider == null || setAsDefault) _provider = provider; } } }
/// <summary> /// Enables the DataRepository to programatically create and /// pass in a <c>NetTiersProvider</c> during runtime. /// </summary> /// <param name="provider">An instatiated NetTiersProvider.</param> public static void LoadProvider(NetTiersProvider provider) { LoadProvider(provider, false); }