В настоящее время мы используем Breeze.js и Angular для разработки наших приложений. Из-за некоторых постоянных проблем с наследием у нас есть две базы данных («Кения» и «Руанда»), которые в настоящее время не могут быть объединены, но имеют одну и ту же схему и метаданные. В большинстве случаев клиент знает, какая база данных будет удалять и передавать запрос через функцию .withParameters() или функцию .saveOptions(). Иногда мы хотим запросить один и тот же запрос из обеих баз данных (например, если мы запрашиваем список всех доступных стран), и мы используем обертку EntityManager на клиенте для управления этим и запрашиваем один и тот же запрос из каждой базы данных. Это реализуется через пользовательский EFContextProvider, который использует данные, возвращенные для определения соответствующей базы данных, и создает соответствующий контекст в CreateContext().Breeze.js: Возврат пустого набора, когда запрашиваемая база данных не существует
Чтобы еще больше усложнить ситуацию, в некоторых случаях одна или другая база данных не будет существовать (это локальные развертывания, созданные с помощью фильтрованной репликации), но клиент этого не знает. Поэтому при запросе списка всех стран он выдает два запроса, а один вызывает сбои, потому что контекст не может быть правильно создан.
Это достаточно легко обнаружить на сервере. То, что я хотел бы сделать, - определить, доступен ли запрошенный контекст, а если нет, вернуть ответ 200 и пустой набор.
Я могу обнаружить это в методе Breeze DBContextProvider CreateContext(), но не могу понять, как заставить запрос корректно отказать в ответе с пустым множеством.
Благодаря