Одна служба WCF и несколько подключений к базе данных - PullRequest
0 голосов
/ 15 июня 2011

Каков наилучший способ иметь узел 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 «по умолчанию» вводится во время создания хоста без параметров. Я хочу переопределить это, но я не хочу передавать это в каждом вызове, потому что это разорвало бы текущие интерфейсы репозитория, совместно используемые кодом клиента и сервера. Каков наиболее прямой способ достижения такого типа поведения?

1 Ответ

1 голос
/ 15 июня 2011

Один из способов сделать это - использовать управление экземпляром для каждого сеанса. Вы задаете, какую базу данных вы хотите использовать при первом вызове сеанса, чтобы затем она использовалась для всего сеанса.

См .: http://msdn.microsoft.com/en-us/magazine/cc163590.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...