Browse Source

Add `SeedInSeparateUowAsync` method.

pull/13940/head
maliming 4 years ago
parent
commit
a5524a7005
No known key found for this signature in database GPG Key ID: 96224957E51C89E
  1. 16
      framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeeder.cs
  2. 5
      framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs

16
framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeeder.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();
}
}
}
}

5
framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs

@ -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));
}
}

Loading…
Cancel
Save