Beispiel #1
0
        public void SetContext(T cont)
        {
            Context = cont;

            // clear cached factories to change the context
            CreatedFactories.Clear();
        }
Beispiel #2
0
        private void Dispose(bool disposing)
        {
            if (!_isDisposed && disposing)
            {
                if (!CollectionUtils.IsNullOrEmpty(CreatedFactories))
                {
                    foreach (var disposable in CreatedFactories.Values)
                    {
                        disposable.Dispose();
                    }

                    CreatedFactories.Clear();
                }

                Context.Dispose();
                _isDisposed = true;
            }
        }
Beispiel #3
0
        private GenericFactory <TEntity, TKey> CreateFactoryCore <TEntity, TKey>() where TEntity : class
        {
            var disposable = CreatedFactories.ContainsKey(typeof(TEntity))
                ? CreatedFactories[typeof(TEntity)]
                : null;

            if (disposable != null)
            {
                if (!disposable.IsDisposed)
                {
                    return((GenericFactory <TEntity, TKey>)disposable);
                }

                CreatedFactories.Remove(typeof(TEntity));
            }

            var factoryType = GetRepositoryType().MakeGenericType(typeof(TEntity), typeof(TKey));

            try
            {
                var factoryObj = Activator.CreateInstance(factoryType, new object[] { Context, AutoCommit });
                var factory    = (GenericFactory <TEntity, TKey>)factoryObj;
                if (factory != null)
                {
                    CreatedFactories.Add(typeof(TEntity), (ICommitable)factoryObj);

                    return(factory);
                }
            }
            // ReSharper disable once EmptyGeneralCatchClause
            catch
            {
                // just return null
            }

            return(null);
        }