Injete facilmente diferentes implementações concretas de serviços e diferentes valores de configuração por locatário.
cd src
dotnet clean && dotnet pack Multitenancy/ && dotnet build && dotnet test ../test/MultitenantAspApp.Tests/MultitenantAspApp.Tests.csproj && dotnet run --project MultitenantAspApp
Agora você pode conferir
http://localhost:5000/XX/api/ValuesWithDependencies
http://localhost:5000/SZ/api/ValuesWithDependencies
http://localhost:5000/XX/api/ValuesWithOptions
http://localhost:5000/SZ/api/ValuesWithOptions
Observe as diferentes saídas por locatário.
No seu projeto ASP.NET, crie uma dependência do pacote Multitenancy:
dotnet add package Multitenancy
e, depois de configurar todas as suas dependências, configure as substituições/dependências individuais para cada um dos seus locatários:
services . ConfigureTenant ( t =>
{
t . TenantId = "SZ" ;
t . ServiceCollection . AddTransient < IHelloWorldService , SzHelloWorldService > ( ) ;
t . ServiceCollection . Configure < ValuesControllerOptions > ( o =>
{
o . Value1Value = 42 ;
o . Value2Value = "value1_configured_by_delegate_for_SZ" ;
} ) ;
} ) ;
Adicione o middleware no método Configure
app . UseMultitenancy ( ) ;
Adicione o prefixo da rota.
Se você deseja passar o parâmetro string tenantId
para suas ações de controlador, você pode adicionar um prefixo de rota que identifica o locatário e o transmite para seus métodos de ação.
Para fazer isso, em seu arquivo Startup.cs
você deve alterar o registro Mvc no método ConfigureServices
de
services . AddMvcCore ( ) ;
para
services . AddMvcCore ( o => { o . UseTenantRoutePrefix ( ) ; } )
Você pode alterar o nome padrão de tenantId
chamando UseTenantRoutePrefix()
com o nome desejado: UseTenantRoutePrefix("tenantIdentifier")
.