Должно быть очень просто, есть метод переопределения, который вы можете использовать для создания источника данных.
//
// Summary:
// Creates a data source of the template class that will be used by the data
// service.
//
// Returns:
// An instance of the data source.
protected virtual T CreateDataSource();
При переопределении это должно выглядеть следующим образом.
protected override MyModel CreateDataSource()
{
MyModel modal = new MyModal();
return modal;
}
Это даст возможность создать источник данных с другой строкой соединения.
Ниже я добавил список вещей, которые вы можете сделать, чтобы передать эту информацию в DataService, чтобы вы могли изменить соединение с вашим источником данных на лету.
1. Заголовки запроса
Вы можете на стороне клиента передавать дополнительную информацию службам данных, если вы подписываете SendingRequest на DataServiceContext, который позволяет добавлять дополнительные заголовки запросов к вашим веб-запросам. Сделав это, например, вы можете прочитать их, обратившись к System.Web.HttpContext.Current.Request.Headers в методе CreateDataSource.
Было бы неплохо иметь возможность получить доступ к внутреннему интерфейсу IDataService, который предоставляет всю информацию, необходимую для выполнения подобных действий.
2. Строка запроса
Другим способом без выполнения SendingRequest и заголовков является добавление параметра QueryString, который можно проверить в конкретном значении, и соответствующей инициализацией источника данных.
3. Идентичность
Вы можете использовать учетные данные пользователей, чтобы выбрать, какой источник данных вы хотите использовать.
Опять же, это всего лишь идеи о том, как добиться этого выбора источников данных.
Вы можете сделать несколько вещей с помощью стратегий, описанных выше. Надеюсь, это ответит на ваш вопрос и поможет вам решить вашу проблему
PS .: до тех пор, пока вы подразумеваете «изменить источник данных», измените строку подключения вашей модели к другой базе данных, вышеописанное будет работать.