# Multi-tenancy · Veille technologique

[Source canonique](<https://sebastien.rigaux.be/veille/tags/multi-tenancy>)

Architecture permettant à plusieurs clients de partager une application avec isolation de leurs données.

Tags associés : [Entity Framework Core](<https://sebastien.rigaux.be/veille/tags/entity-framework-core>) · [SQL Server](<https://sebastien.rigaux.be/veille/tags/sql-server>)

## [Finbuckle.MultiTenant : isoler les tenants dans une application .NET](<https://sebastien.rigaux.be/veille/liens/finbucklemultitenant-isoler-les-tenants-dans-une-application-net>)

Finbuckle.MultiTenant fournit à ASP.NET Core les briques de résolution des tenants, de configuration par tenant et d’isolation des données. Le démarrage combine une stratégie basée sur le host, un store alimenté par la configuration et le middleware `UseMultiTenant()`.

Le middleware doit précéder ceux qui dépendent du tenant, comme l’authentification et l’autorisation. La bibliothèque propose aussi des intégrations pour les options, l’authentification et l’isolation des données avec Entity Framework Core.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/finbucklemultitenant-isoler-les-tenants-dans-une-application-net.md>) · [Ressource originale](<https://www.finbuckle.com/MultiTenant/#getting-started>)

## [.NET multi-tenant : migrer un tenant sans interrompre le service — partie 4/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-migrer-un-tenant-sans-interrompre-le-service-partie-44>)

Ce volet explique comment déplacer un tenant d’une base partagée vers une base dédiée sans arrêter l’application ni perturber les autres tenants. Le catalogue pilote le basculement, tandis que le même modèle EF Core et son filtre restent en place dans les deux modes.

La migration s’appuie sur une copie initiale, un passage temporaire en lecture seule, une copie delta et une vérification avant le cutover. Le runbook attend l’expiration du cache avant de rouvrir les écritures : les instances qui conservent encore l’ancienne connexion ne peuvent ainsi pas écrire dans la base partagée après le basculement.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-migrer-un-tenant-sans-interrompre-le-service-partie-44.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/08/multi-tenant-moving-day/>)

## [.NET multi-tenant : une base par tenant — partie 3/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-une-base-par-tenant-partie-34>)

Avec une base par tenant, EF Core n’a plus besoin de filtre global, de colonne `TenantId` ni de clé de cache de modèle spécifique : le choix du tenant passe par une chaîne de connexion résolue depuis une base catalogue.

Cette isolation simplifie le modèle, mais déplace la complexité vers l’exploitation : chaque migration doit s’appliquer à toutes les bases. L’article détaille aussi le rôle de `IDesignTimeDbContextFactory` pour permettre à `dotnet ef` de créer le contexte sans requête ni tenant actif.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-une-base-par-tenant-partie-34.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/08/multi-tenant-part-3/>)

## [.NET multi-tenant : séparer les données par schéma SQL Server — partie 2/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-separer-les-donnees-par-schema-sql-server-partie-24>)

Cette partie 2/4 montre comment isoler les données de chaque tenant dans son propre schéma SQL Server, sans filtre global ni colonne `TenantId` obligatoire. Le modèle EF Core retrouve ainsi une clé primaire simple, tandis que la frontière d’isolation est portée par la structure de la base.

Le changement central tient au cache du modèle : `OnModelCreating` ne s’exécute qu’une fois par modèle. Il faut intégrer le schéma à la clé via `IModelCacheKeyFactory`, faute de quoi EF Core peut réutiliser celui du premier tenant. L’article détaille aussi le provisionnement et les migrations par schéma, ainsi que la validation stricte des noms de schéma interpolés dans le SQL.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-separer-les-donnees-par-schema-sql-server-partie-24.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/07/multi-tenant-part-2/>)

## [.NET multi-tenant : requêtes isolées et partitions SQL Server — partie 1/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-requetes-isolees-et-partitions-sql-server-partie-14>)

Cette première partie présente une architecture multi-tenant .NET à schéma partagé : EF Core filtre les lectures par tenant et SQL Server partitionne physiquement les lignes pour accélérer l’accès aux données. Le point essentiel : le partitionnement n’est pas une frontière de sécurité ; l’isolation repose sur le filtre global EF Core.

L’article détaille aussi la résolution du tenant par requête, l’attribution de son identifiant aux nouvelles lignes et l’ajout des partitions aux migrations avec du SQL brut. La clé primaire doit inclure `GuildId`, contrainte imposée par SQL Server pour partitionner un index unique.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-requetes-isolees-et-partitions-sql-server-partie-14.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/07/multi-tenant-part-1/>)

## [Un starter SaaS Next.js avec authentification et multitenancy](<https://sebastien.rigaux.be/veille/liens/un-starter-saas-next-js-avec-authentification-et-multitenancy>)

Ce boilerplate assemble Next.js, Tailwind et shadcn/ui avec authentification, rôles et support des équipes. Il inclut aussi des briques de base de données, i18n et tests pour démarrer un SaaS.

2025-07-19 · [Markdown](<https://sebastien.rigaux.be/veille/liens/un-starter-saas-next-js-avec-authentification-et-multitenancy.md>) · [Ressource originale](<https://github.com/ixartz/SaaS-Boilerplate>)

## [Structurer une application multitenant avec FinBuckle](<https://sebastien.rigaux.be/veille/liens/structurer-une-application-multitenant-avec-finbuckle>)

L’article explique comment FinBuckle.MultiTenant s’intègre à ASP.NET Core autour des tenants, stratégies de résolution et stores. Une base pour organiser l’isolation et les comportements propres à chaque client.

2023-09-10 · [Markdown](<https://sebastien.rigaux.be/veille/liens/structurer-une-application-multitenant-avec-finbuckle.md>) · [Ressource originale](<https://khalidabuhakmeh.com/posts/multi-tenancy-with-aspnet-core-and-finbuckle-multitenant/>)
