/// <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);
 }
Exemple #2
0
        /// <summary>
        /// Fill a TList&lt;Classes&gt; 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&lt;Classes&gt;"/></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);
        }
Exemple #3
0
            /// <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];
                        }
                    }
                }
            }
Exemple #4
0
        ///<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");
                        }
                    }
                }
            }
        }
Exemple #5
0
        /// <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;
                }
            }
        }
Exemple #6
0
 /// <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);
 }