Обычный способ выполнить sh - это использовать отдельные базы данных на пользователя / арендатора. Тогда вы можете просто изменить строку подключения, вместо того, чтобы иметь отдельные схемы в одной базе данных. Отдельные базы данных более безопасны, позволяют масштабировать на нескольких серверах и включают резервное копирование и восстановление для каждого клиента.
Ссылочный подход с использованием пользовательского ModelKeyCacheFactory для настройки и кэширования отдельной модели DbContext для каждый пользователь должен работать. Недостатком является то, что вы будете настраивать и кэшировать большое количество моделей, что не является бесплатным.
Но для использования схем у вас есть другой вариант. В EF Core 3.1 (по крайней мере), если вы не конфигурируете схему для сущности и не конфигурируете схему по умолчанию для DbContext, имена объектов не будут квалифицированы по схеме. Таким образом, вы можете использовать правила разрешения схемы вашей базы данных для направления запросов к правильной схеме. Например, в SQL Server вы бы предоставили отдельного пользователя базы данных для каждого арендатора с разрешениями на схему этого арендатора и со схемой арендатора, настроенной как схема пользователя по умолчанию.
Вы также могли бы потенциально использовать Перехват запросов для перезаписи запросов после настройки DbContext для вставки некоторого легко заменяемого токена в качестве имени схемы.