Exemple #1
0
        static void AddDataServicesTo(IServiceCollection services, IConfigurationRoot _configuration)
        {
            var mongoConnectionString = _configuration["mongoConnectionString"];
            var hasMongoCongured      = !string.IsNullOrWhiteSpace(mongoConnectionString);


            if (hasMongoCongured)
            {
                services.AddScoped(typeof(IRepositoryContext), (serviceProvider) =>
                {
                    // @jijiechen: detect at every time initate a new IRepositoryContext
                    // may cause a performance issue
                    if (!MongoDbUtils.DatabaseExists(mongoConnectionString))
                    {
                        throw new ApplicationException("Could not find a database using specified connection string");
                    }

                    return(new MongoRepositoryContext(mongoConnectionString));
                });
                services.AddScoped(typeof(Repository <,>), typeof(MongoRepository <,>));
            }
            else
            {
                var dataContext = new InMemoryResponsitoryContext();
                services.AddScoped(typeof(IRepositoryContext), (serviceProvider) => dataContext);
                services.AddScoped(typeof(Repository <,>), typeof(InMemoryDataRepository <,>));
            }

            services.AddScoped(typeof(IDataRepository <>), typeof(BaseDataRepository <>));
        }
        void Dispose(bool disposing)
        {
            if (disposing)
            {
                GC.SuppressFinalize(this);
            }


            if (_dataContext != null)
            {
                (_dataContext as IDisposable).Dispose();
                _dataContext = null;
            }

            if (_applicationContext != null)
            {
                (_applicationContext as IDisposable).Dispose();
                _applicationContext = null;
            }
        }