Prerequisites
AspNetZero .NET Core/Angular 10.2
I have added numerous new tables to my schema, which must be initialized for each new tenant created.
Do you have a recommended hooking process/convention for "initializing" default state for a new tenant?
I have scanned the documentation, and the best I could find, was reference to seeding tables during migration - which doesnt address seeding/initializing when a host admin clicks "new tenant".
Thanks,
3 Answer(s)
-
0
Hi,
Sorry for the late reply. It is better to do it in
CreateWithAdminUserAsyncmethod ofTenantManager.Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
1
@hra I had a similar requirement.
Generally we've adopted a strategy to keep the base ANZ code upgradeable, that consists in writing all additional implementation and overrides in a separated project that defines its own Module. With this premise, for customizing operations during new tenant registration I've ended up inheriting from
TenantRegistrationAppService, marking itsRegisterTenantmethod asvirtualand overriding it in my inheriting class:public class MyCustomTenantRegistrationAppService : TenantRegistrationAppService { .... /// <summary> /// Customize tenant registration operations /// </summary> [UnitOfWork] public override async Task<RegisterTenantOutput> RegisterTenant(RegisterTenantInput input){ ... var registerTenantOutput = await base.RegisterTenant(input); ... } }The overriding implementation must be registered as default during the module's
PreInitializemethod:/// <summary> /// Application layer module of the application. /// </summary> [DependsOn(typeof(MyCompanyApplicationSharedModule), typeof(MyCompanyCoreModule))] public class MyCompanyAppModule : AbpModule { ... public override void PreInitialize() { ... // register tenant registration app service override Configuration.ReplaceService(typeof(TenantRegistrationAppService), () => { Configuration.IocManager.IocContainer.Register(Component.For<TenantRegistrationAppService>() .ImplementedBy<MyCustomTenantRegistrationAppService>() .IsDefault()); }); ... } ... }If you do not use implementations separation in a dedicated module, you can simply modify
TenantRegistrationAppService.RegisterTenant.Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Hi @payoff,
Thank you for your suggestion. This is exactly the kind of best-practice I was looking for.
Regards,
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image)