Injectez facilement différentes implémentations concrètes de services et différentes valeurs de configuration par locataire.
cd src
dotnet clean && dotnet pack Multitenancy/ && dotnet build && dotnet test ../test/MultitenantAspApp.Tests/MultitenantAspApp.Tests.csproj && dotnet run --project MultitenantAspApp
Vous pouvez maintenant consulter
http://localhost:5000/XX/api/ValuesWithDependencies
http://localhost:5000/SZ/api/ValuesWithDependencies
http://localhost:5000/XX/api/ValuesWithOptions
http://localhost:5000/SZ/api/ValuesWithOptions
Notez les différentes sorties par locataire.
Dans votre projet ASP.NET, prenez une dépendance sur le package Multitenancy :
dotnet add package Multitenancy
et, après avoir configuré toutes vos dépendances, configurez les remplacements/dépendances individuelles pour chacun de vos locataires :
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" ;
} ) ;
} ) ;
Ajouter le middleware dans la méthode Configure
app . UseMultitenancy ( ) ;
Ajoutez un préfixe d'itinéraire.
Si vous souhaitez pouvoir transmettre le paramètre string tenantId
aux actions de votre contrôleur, vous pouvez ajouter un préfixe de route qui identifie le locataire et le transmet à vos méthodes d'action.
Pour ce faire, dans votre fichier Startup.cs
vous devez modifier l'enregistrement Mvc dans la méthode ConfigureServices
de
services . AddMvcCore ( ) ;
à
services . AddMvcCore ( o => { o . UseTenantRoutePrefix ( ) ; } )
Vous pouvez modifier le nom par défaut de tenantId
en appelant UseTenantRoutePrefix()
avec le nom souhaité : UseTenantRoutePrefix("tenantIdentifier")
.