private async Task ImportOrgUnits(CancellationToken cancellationToken) { await foreach (var googleOrgUnit in Google.GetOrgUnitsAsync(cancellationToken)) { if (IgnoreOrgUnitPaths.Contains(googleOrgUnit.OrgUnitPath)) { Logger.LogDebug("Skipping organization unit {OrgUnitPath}.", googleOrgUnit.OrgUnitPath); continue; } var orgUnit = await Context.OrganizationUnits.FirstOrDefaultAsync(x => x.Path.Equals(googleOrgUnit.OrgUnitPath), cancellationToken); if (orgUnit is null) { orgUnit = new OrganizationUnit { Path = googleOrgUnit.OrgUnitPath }; await Context.OrganizationUnits.AddAsync(orgUnit, cancellationToken); } orgUnit.Name = googleOrgUnit.Name.TrimStart('_'); orgUnit.ParentPath = googleOrgUnit.ParentOrgUnitPath; } var count = await Context.SaveChangesAsync(cancellationToken); Logger.LogInformation("Imported {OrgUnitCount} org units from Google.", count); }