SeedHelper.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Abp.Dependency;
  2. using Abp.Domain.Uow;
  3. using Abp.EntityFrameworkCore.Uow;
  4. using Microsoft.EntityFrameworkCore;
  5. using System.Transactions;
  6. using VberAdmin.EntityFrameworkCore;
  7. namespace VberAdmin.Seed;
  8. public static class SeedHelper
  9. {
  10. public static void SeedHostDb(IIocResolver iocResolver)
  11. {
  12. WithDbContext<VberAdminDbContext>(iocResolver, SeedHostDb);
  13. }
  14. public static void SeedHostDb(VberAdminDbContext context)
  15. {
  16. context.SuppressAutoSetTenantId = true;
  17. new InitialHostDbBuilder(context).Create();
  18. }
  19. private static void WithDbContext<TDbContext>(IIocResolver iocResolver, Action<TDbContext> contextAction)
  20. where TDbContext : DbContext
  21. {
  22. using var uowManager = iocResolver.ResolveAsDisposable<IUnitOfWorkManager>();
  23. using var uow = uowManager.Object.Begin(TransactionScopeOption.Suppress);
  24. var context = uowManager.Object.Current.GetDbContext<TDbContext>(Abp.MultiTenancy.MultiTenancySides.Host);
  25. contextAction(context);
  26. uow.Complete();
  27. }
  28. }