// Clean up any stale data since this is a snapshot of data ingestion private void Cleanup() { this.logger.LogInformation($"Deleting up stale data for {this.vssClient.OrganizationName}..."); using VssDbContext dbContext = new VssDbContext(logger, this.sqlServerConnectionString); using IDbContextTransaction transaction = dbContext.Database.BeginTransaction(); int deletedBuildDefinitionResult = dbContext.BulkDelete(dbContext.VssBuildDefinitionEntities.Where(v => v.Organization == this.vssClient.OrganizationName && v.RowUpdatedDate < Helper.UtcNow)); int deletedBuildDefinitionStepResult = dbContext.BulkDelete(dbContext.VssBuildDefinitionStepEntities.Where(v => v.Organization == this.vssClient.OrganizationName && v.RowUpdatedDate < Helper.UtcNow).ToList()); transaction.Commit(); this.logger.LogInformation($"Done deleting {deletedBuildDefinitionResult} build definitions and {deletedBuildDefinitionStepResult} build definition steps"); }
private void IngestData(List <TeamProjectReference> projects) { List <VssProjectEntity> entities = new List <VssProjectEntity>(); foreach (TeamProjectReference project in projects) { VssProjectEntity entity = new VssProjectEntity { Organization = this.vssClient.OrganizationName, ProjectId = project.Id, Name = project.Name, LastUpdateTime = project.LastUpdateTime, Revision = project.Revision, State = project.State.ToString(), Visibility = project.Visibility.ToString(), Url = project.Url, }; entities.Add(entity); } this.logger.LogInformation("Start ingesting projects data..."); using VssDbContext context = new VssDbContext(logger, this.sqlConnectionString); using IDbContextTransaction transaction = context.Database.BeginTransaction(); context.BulkDelete(context.VssProjectEntities.Where(v => v.Organization == this.vssClient.OrganizationName)); int insertedResult = context.BulkInsert(entities); transaction.Commit(); this.logger.LogInformation($"Done ingesting {insertedResult} records"); }