Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Defensive database context
To make sure that data from different tenants doesn't get mixed in multi-tenant application we can add some defensive behaviour to multi-tenant database context to build additional safety net for application developers.
The following demonstrates defensive database context and it uses the following classes:
- ITenantProvider - interface for tenant providers,
- DummyTenantProvider - tenant provider for demo purposes,
- BaseEntity - base class for all entities,
- Person - sample entity type for this demo,
- CrossTenantUpdateException - exception type for operations that use data from multiple tenants,
- SampleDbContext - defensive database context.
The sample below creates new instance of database context, adds two instances of Person entities that belong to different tenants and then saves changes. If cross-tenant operation exception is thrown then tenant ID-s involved to incident are written out.
- Defensive database context for multi-tenant ASP.NET Core applications (Gunnar Peipman)
- Implementing tenant providers on ASP.NET Core (Gunnar Peipman)