Browse Source

Update PermissionDataSeeder.cs

Refactor SeedAsync to use InsertManyAsync for batch permission grants

- Replaced individual permission insertions with a batch insert method (InsertManyAsync) for improved performance and cleaner code.
- Created a list of new PermissionGrant objects from grantedPermissions that do not already exist.
- This change reduces the number of database calls and enhances efficiency when seeding permissions.
pull/21445/head
Mohammad Sadeq Azarkaman 2 years ago
committed by GitHub
parent
commit
7860222e04
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 15
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs

15
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs

@ -35,19 +35,8 @@ public class PermissionDataSeeder : IPermissionDataSeeder, ITransientDependency
{
var names = grantedPermissions.ToArray();
var existsPermissionGrants = (await PermissionGrantRepository.GetListAsync(names, providerName, providerKey)).Select(x => x.Name).ToList();
foreach (var permissionName in names.Except(existsPermissionGrants))
{
await PermissionGrantRepository.InsertAsync(
new PermissionGrant(
GuidGenerator.Create(),
permissionName,
providerName,
providerKey,
tenantId
)
);
}
var permissions = names.Except(existsPermissionGrants).Select(permissionName => new PermissionGrant(GuidGenerator.Create(), permissionName, providerName, providerKey, tenantId)).ToList();
await PermissionGrantRepository.InsertManyAsync(permissions);
}
}
}

Loading…
Cancel
Save