public void AddResources(IEnumerable <IdentityResource> resources) { var existingResources = _identityDbContext.IdentityResources.ToList(); foreach (var identityResource in resources) { var existingResource = existingResources.FirstOrDefault(i => i.Name.Equals(identityResource.Name, StringComparison.OrdinalIgnoreCase)); if (existingResource != null) { continue; } _identityDbContext.IdentityResources.Add(identityResource.ToEntity()); } try { _identityDbContext.SaveChanges(); } catch (DbUpdateException ex) { _logger.Warning(ex, "Error when adding IdentityResource, error message: {Message}.", ex.Message); } catch (Exception ex) { _logger.Warning(ex, ex.Message); throw; } }
public void AddResources(IEnumerable <IdentityResource> resources) { var existingResources = _identityDbContext.IdentityResources.Include(r => r.IdentityClaims).ToList(); foreach (var identityResource in resources) { var existingResource = existingResources.FirstOrDefault(i => i.Name.Equals(identityResource.Name, StringComparison.OrdinalIgnoreCase)); if (existingResource != null) { var existingClaims = existingResource.IdentityClaims.ToList(); foreach (var identityResourceUserClaim in identityResource.UserClaims) { if (existingClaims.All(c => c.Type != identityResourceUserClaim)) { existingResource.IdentityClaims.Add(new IdentityClaim { Type = identityResourceUserClaim }); } } } else { _identityDbContext.IdentityResources.Add(identityResource.ToEntity()); } } try { _identityDbContext.SaveChanges(); } catch (DbUpdateException ex) { _logger.Warning(ex, "Error when adding IdentityResource, error message: {Message}.", ex.Message); } catch (Exception ex) { _logger.Warning(ex, ex.Message); throw; } }