public void InsertScrapedPersonTest() { IServiceProvider serviceProvider = DIHelper.Initialize(); PersonDataFetchSettings personDataFetchSettings = new FullPersonDataFetchSettings(); DbContextOptionsBuilder <JMoviesEntities> dbContextOptionsBuilder = new DbContextOptionsBuilder <JMoviesEntities>(); dbContextOptionsBuilder.UseLazyLoadingProxies(true); using (JMoviesEntities entities = new JMoviesEntities(dbContextOptionsBuilder.Options)) { foreach (long imdbID in personIDsToTest) { //DBHelper.EmptyDB(entities); IIMDbDataProvider iMDbDataProvider = serviceProvider.GetRequiredService <IIMDbDataProvider>(); Person person = iMDbDataProvider.GetPerson(imdbID, personDataFetchSettings); PersonPersistanceManager.Persist(entities, person); Person savedPerson = entities.Person.SingleOrDefault(e => e.IMDbID == person.IMDbID); Assert.IsNotNull(savedPerson); Assert.AreEqual(person.IMDbID, savedPerson.IMDbID); Assert.AreEqual(person.FullName, savedPerson.FullName); } } }
static void Main(string[] args) { var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{EnvironmentUtilities.GetEnvironmentName()}.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() .AddCommandLine(args); BaseJobConfiguration configuration = builder.Build().Get <BaseJobConfiguration>(); InitializationHelper.Initialize(configuration); var services = new ServiceCollection(); services.AddOptions(); var serviceProvider = services.BuildServiceProvider(); if (configuration.MaxRecordCount == default(int)) { configuration.MaxRecordCount = ConfigurationConstants.PersisterRecordCountPerRun; } using (JMoviesEntities entities = new JMoviesEntities()) { IIMDbDataProvider imdbDataProvider = new IMDbScraperDataProvider(); if (configuration.StartRecordID == default(long) || configuration.WorkingType == PersisterWorkingTypeEnum.UpdateInternalData) { configuration.StartRecordID = PersisterHelper.DetermineTheStartID(EntityType, DataSource, configuration.WorkingType, configuration.StartRecordID, entities); } long dataID = configuration.StartRecordID; for (int i = 0; i < configuration.MaxRecordCount; i++) { if (i != 0) { dataID = PersisterHelper.GetNextID(EntityType, DataSource, configuration.WorkingType, entities, dataID); } if (dataID != default(long)) { if (dataID > ConfigurationConstants.IMDBMaxID) { dataID = 1; } try { Person person = imdbDataProvider.GetPerson(dataID, PersonDataFetchSettings); DbContextOptionsBuilder <JMoviesEntities> dbContextOptionsBuilder = new DbContextOptionsBuilder <JMoviesEntities>(); dbContextOptionsBuilder.UseLazyLoadingProxies(true); using (JMoviesEntities productionPersistanceEntities = new JMoviesEntities(dbContextOptionsBuilder.Options)) { PersonPersistanceManager.Persist(productionPersistanceEntities, person); } PersisterHelper.SavePersisterHistory(entities, dataID, DataSource, EntityType, string.Empty); } catch (Exception exception) { PersisterHelper.SavePersisterHistory(entities, dataID, DataSource, EntityType, exception.ToString()); } entities.SaveChanges(); } } } }