ИМХО, мы работали в нескольких приложениях SaaS, которые использовали общую базу данных [центральный репозиторий], которая будет содержать все данные пользователя [арендатора] и что для каждой группы пользователей будет база данных приложения [основанная на арендаторе].
В EF это будет работать легко, и производительность не будет снижаться. Вам не следует использовать перекрестные запросы к базе данных, а вместо этого сосредоточиться на оптимизации кода EF, который может иметься на уровне доступа к данным, и тогда у вас могут быть отдельные службы, которые будут обрабатывать задачу объединения пользовательских данных из общей и отдельных баз данных. .
Может быть, вам следует проанализировать приложение, а затем найти данные, которые могут обновляться не часто, и кэшировать их, а затем отобразить их с помощью распределенного кэша, такого как Appfabric.
Что касается синхронизации пользовательских БД и централизованной базы данных, на уровне обслуживания вы можете выполнить эту работу, поместив эти вызовы в область .Net Transaction, а затем сохранив атомарность.
Пожалуйста, напишите ваше понимание и любые дальнейшие разъяснения в моем ответе.