我正在尝试使用 ABP 的身份模块并为我的第一个(管理员)用户提供种子。
在身份模块种子贡献者的源代码中,我看到了这一点:
public Task SeedAsync(DataSeedContext context)
{
return _identityDataSeeder.SeedAsync(
context["AdminEmail"] as string ?? "admin@abp.io",
context["AdminPassword"] as string ?? "1q2w3E*",
context.TenantId
);
}
所以在我的迁移器模块中我添加了以下内容:
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
using (var scope = context.ServiceProvider.CreateScope())
{
var dataSeeder = scope.ServiceProvider.GetRequiredService<IDataSeeder>();
var dsCtx = new DataSeedContext
{
["AdminEmail"] = "my@admin-email",
["AdminPassword"] = "my-admin-password"
};
AsyncHelper.RunSync(() => dataSeeder.SeedAsync(dsCtx));
}
base.OnApplicationInitialization(context);
}
这有效...但是可能有另一个模块创建数据播种器(更可能是在迁移器上实际执行的模块,但我找不到它),因此我所有的贡献者(可能还有模块贡献者)都被执行两次(我想这是可以预料的)。
有什么方法可以在不实际运行的情况下更改播种上下文IDataSeeder?如果这不能完成...有没有一种方法可以“取消注册”IDataSeeder我之前的所有内容,以便只有我的内容被执行?
qq_笑_17
相关分类