Sponsor: Interested in learning more about Distributed Systems Design? Enter for a chance to win a 5 day Advanced Distributed Systems Design course led by Udi Dahan founder of Particular Software, and creator of NServiceBus.
There are many different ways to handle multi-tenancy. This blog post will cover one approach to EF Core Multi-Tenancy that will work if you are using a shared database approach, meaning you use the same database for multiple tenants, that are disambiguated using tenant ID column.
If you want more details on Multi-Tenancy, check out the Microsoft Docs on the topic, related to designing multi-tenant apps using Azure SQL Database.
Entity
Let’s jump right into some sample code of a simple Entity that represents a customer. Notice theTenantId.
Filter
The approach we are going to use is to pre-filter anyDbSet in our DbContext. We can do this by using the EntityFramework-Plus package.
It provides us the ability to specify per context instance how to pre-filter our DbSets. We can do this by adding our TenantId as a ctor parameter and use the Filter<T> extension method.
Example Usage
Here’s a small console app that adds two new customer records both with the sameCustomerId = 1. When creating the MyDbContext, we the TenantId we want to pre-filter on.