elsa-workflows / elsa-workflows/elsa-core

The database is not created automatically when using multitenancy

Open
#6,945 3 comments 0 reactions 0 assignees View on GitHub
triaged
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.