elsa-workflows / elsa-workflows/elsa-core
The database is not created automatically when using multitenancy
- Dominant language
- C#
- Stars
- 7.9k
- Forks
- 1.5k
- Avg merge
- 15h 22m
- Merged PRs (30d)
- 114
Description
## Description
The database is not created automatically when using multitenancy.
The code below doesn’t create the database:
builder.Services.AddElsa(elsa =>
{
var defaultConnectionString = builder.Configuration.GetConnectionString("WorkflowDatabase");
elsa.UseWorkflowManagement(management =>
management.UseEntityFrameworkCore(ef =>
{
ef.RunMigrations = true;
ef.DbContextOptionsBuilder = (serviceProvider, dbBuilder) =>
{
// Get tenant from current context
var tenantAccessor = serviceProvider.GetService();
var tenant = tenantAccessor?.Tenant;
if (tenant != null)
{
var connectionString = tenant.Configuration.GetConnectionString("SqlServer");
dbBuilder.UseSqlServer(connectionString, db => db.MigrationsAssembly("AiGlean.Orchestrator.Api"));
}
else
{
// Fallback during startup only
dbBuilder.UseSqlServer(defaultConnectionString, db => db.MigrationsAssembly("AiGlean.Orchestrator.Api"));
}
};
}));
elsa.UseWorkflowRuntime(runtime =>
runtime.UseEntityFrameworkCore(ef =>
{
ef.RunMigrations = true;
ef.DbContextOptionsBuilder = (serviceProvider, dbBuilder) =>
{
var tenantAccessor = serviceProvider.GetService();
var tenant = tenantAccessor?.Tenant;
if (tenant != null)
{
var connectionString = tenant.Configuration.GetConnectionString("SqlServer");
dbBuilder.UseSqlServer(connectionString, db => db.MigrationsAssembly("Api"));
}
else
{
dbBuilder.UseSqlServer(defaultConnectionString, db => db.MigrationsAssembly("AiGlean.Orchestrator.Api"));
}
};
}));
elsa.UseIdentity(identity =>
{
identity.UseEntityFrameworkCore(ef =>
{
ef.RunMigrations = true;
ef.DbContextOptionsBuilder = (serviceProvider, dbBuilder) =>
{
var tenantAccessor = serviceProvider.GetService();
var tenant = tenantAccessor?.Tenant;
if (tenant != null)
{
var connectionString = tenant.Configuration.GetConnectionString("SqlServer");
dbBuilder.UseSqlServer(connectionString, db => db.MigrationsAssembly("AiGlean.Orchestrator.Api"));
}
else
{
dbBuilder.UseSqlServer(defaultConnectionString, db => db.MigrationsAssembly("AiGlean.Orchestrator.Api"));
}
};
});
identity.TokenOptions = options => identityTokenSection.Bind(options);
//identity.UseAdminUserProvider();
});
Contributor guide
Assessment
This issue has not been assessed yet.