2010-11-12 4 views
1

У меня есть очень простой файл фреймворка сущности (.edmx) и служба обслуживания .svc.Динамический выбор объекта сущности фрейма связи

Все работает нормально для операций CRUD.

У меня много баз данных, которые разделяют точно такую ​​же схему.

Мой следующий шаг - позволить клиенту передать inn параметр, который может быть строкой соединения или другим значением, идентифицирующим пользователя, чтобы служба обслуживала данные из правильной базы данных.

Теперь единственный параметр является URI для ServiceRoot

я вижу в DataModel, что я могу передать Inn строку подключения, но как я могу сделать это от клиента, не делая много служебных файлов.

ответ

0

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

Это отличный вопрос, и это сценарий, который, я надеюсь, будет рассмотрен в будущем стеке WCF HTTP.

В то же время есть некоторые положительные новости. В прошлом я экспериментировал с созданием большого количества хостов (около 1000), и мои эксперименты показали, что довольно эффективно запускать и не потреблять большие объемы ОЗУ. Ключом является создание хостов службы в коде, а не через файлы конфигурации. Очевидно, что вы не хотите вручную писать файл конфигурации XML с тысячами записей службы в нем!

Возможно, это не идеальное решение, но я считаю, что это сработает.

0

Если вы используете службы данных WCF, вы должны иметь возможность передавать информацию, идентифицирующую источник данных, который будет использоваться в HTTP-запросе. Либо в качестве настраиваемой опции в URL-адресе, либо как пользовательский HTTP-заголовок (я бы, вероятно, использовал настраиваемый заголовок, так как с клиентом работать гораздо проще). В зависимости от способа размещения службы вы должны иметь доступ к заголовкам запроса на сервере. Вы можете использовать способ ASP.NET для этого (статические переменные), или вы можете подключиться к конвейеру обработки служб данных WCF, который также позволит вам получить доступ к этим заголовкам.