Каков наилучший способ иметь узел WCF для доступа к нескольким базам данных без передачи имени после инициализации клиента WCF? Я использую DI и хочу сделать что-то вроде:
wcfCourseManagement.CourseManagementClient _wcfclient = null;
public WCFCourseRepository(ISystemService systemService): base(systemService)
{
_wcfclient = new wcfCourseManagement.CourseManagementClient();
ServiceEndpoint endpoint = systemService.GetServiceEndpoint("CourseManagement");
if (endpoint != null)
_wcfclient.Endpoint.Address = new EndpointAddress(new Uri(endpoint.Endpoint));
if (_wcfclient.GetRemoteSystemID != systemService.ClientSystem.PreferredRemoteSystemID)
_wcfclient.SetCurrentSystem(systemService.ClientSystem.PreferredRemoteSystemID);
}
SetCurrentSystem сообщает хосту WCF, что при необходимости он должен перестроить хранилища данных. Системный идентификатор - это просто идентификатор в хранилище конфигурации, которое сервер использует для загрузки информации о конфигурации базы данных. Тем не менее, из-за конструкции проводки хоста WCF, SystemID «по умолчанию» вводится во время создания хоста без параметров. Я хочу переопределить это, но я не хочу передавать это в каждом вызове, потому что это разорвало бы текущие интерфейсы репозитория, совместно используемые кодом клиента и сервера. Каков наиболее прямой способ достижения такого типа поведения?