Multi-tenant ASP.NET Core 7 - Defensive database context

gpeipman
3,276 views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

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.

Click to run the .NET Core Web app.

References

Open Source Your Knowledge: become a Contributor and help others learn. Create New Content