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; } }