Browse Source
Add `SeedInSeparateUowAsync` method.
pull/13940/head
maliming
4 years ago
No known key found for this signature in database
GPG Key ID: 96224957E51C89E
2 changed files with
17 additions and
4 deletions
-
framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeeder.cs
-
framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs
|
|
|
@ -25,13 +25,21 @@ public class DataSeeder : IDataSeeder, ITransientDependency |
|
|
|
{ |
|
|
|
using (var scope = ServiceScopeFactory.CreateScope()) |
|
|
|
{ |
|
|
|
var manager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); |
|
|
|
foreach (var contributorType in Options.Contributors) |
|
|
|
{ |
|
|
|
var contributor = (IDataSeedContributor)scope |
|
|
|
.ServiceProvider |
|
|
|
.GetRequiredService(contributorType); |
|
|
|
using (var uow = manager.Begin( |
|
|
|
requiresNew: context.Properties.ContainsKey(nameof(DataSeederExtensions.SeedInSeparateUowAsync)), |
|
|
|
isTransactional: true)) |
|
|
|
{ |
|
|
|
var contributor = (IDataSeedContributor)scope |
|
|
|
.ServiceProvider |
|
|
|
.GetRequiredService(contributorType); |
|
|
|
|
|
|
|
await contributor.SeedAsync(context); |
|
|
|
await contributor.SeedAsync(context); |
|
|
|
|
|
|
|
await uow.CompleteAsync(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -9,4 +9,9 @@ public static class DataSeederExtensions |
|
|
|
{ |
|
|
|
return seeder.SeedAsync(new DataSeedContext(tenantId)); |
|
|
|
} |
|
|
|
|
|
|
|
public static Task SeedInSeparateUowAsync(this IDataSeeder seeder, Guid? tenantId = null) |
|
|
|
{ |
|
|
|
return seeder.SeedAsync(new DataSeedContext(tenantId).WithProperty(nameof(DataSeederExtensions.SeedInSeparateUowAsync), true)); |
|
|
|
} |
|
|
|
} |
|
|
|
|