2010-11-12 14 views
1

J'ai un fichier de structure d'entité (.edmx) très simple et un service de repos .svc.Dynamique choisir repos de structure d'entité de connexion

Tout fonctionne correctement pour les opérations CRUD.

J'ai de nombreuses bases de données qui partage exactement le même schéma.

L'étape suivante consiste à laisser le client passer un paramètre qui pourrait être la chaîne de connexion ou une autre valeur identifiant l'utilisateur afin que le service serve les données de la base de données correcte.

Maintenant, le seul paramètre est le uri pour le ServiceRoot

Je vois dans le datamodel que je peux passer auberge une chaîne de connexion, mais comment puis-je le faire à partir du client sans faire de nombreux fichiers de service.

Répondre

0

Je suppose que vous utilisez WCF Data Services pour exposer le fichier edmx. Je ne suis pas un expert dans cette boîte à outils mais je soupçonne que la seule façon directe est de créer un service pour chaque base de données.

C'est une excellente question et j'espère que ce scénario sera abordé dans la future pile HTTP WCF.

En attendant, il y a des nouvelles positives. J'ai expérimenté dans le passé avec la création d'un grand nombre d'hôtes de service (environ 1000) et mon expérimentation a montré qu'il était assez efficace pour démarrer et ne consommait pas de grandes quantités de RAM. La clé est de créer les hôtes de service dans le code plutôt que via les fichiers de configuration. Évidemment, vous ne voulez pas écrire à la main un fichier de configuration XML contenant des milliers d'entrées de service!

Ce n'est peut-être pas la solution idéale, mais je crois que cela fonctionnerait.

0

Si vous utilisez WCF Data Services, vous devriez pouvoir transmettre les informations identifiant la source de données à utiliser dans la requête HTTP. Soit en tant qu'option personnalisée dans l'URL ou en tant qu'en-tête HTTP personnalisé (j'utiliserais probablement l'en-tête personnalisé car il est beaucoup plus facile de travailler avec le client). Selon la façon dont vous hébergez le service, vous devriez pouvoir accéder aux en-têtes de la requête sur le serveur. Vous pouvez utiliser la méthode ASP.NET pour ce faire (variables statiques) ou vous pouvez vous connecter au pipeline de traitement des services de données WCF, ce qui devrait vous permettre d'accéder à ces en-têtes également.