web-dev-qa-db-fra.com

Pourquoi une connexion-cadre d'entité nécessite-t-elle une propriété de métadonnées?

J'ai commuté mon dal de l'utilisation de Linq dans le cadre d'entité. Étant donné que mon application se connecte à différentes bases de données en fonction de l'utilisateur actuel, j'ai besoin de créer de manière dynamique le DataContext au moment de l'exécution et de passer dans la chaîne de connexion appropriée. Toutefois, lorsque j'ai essayé de créer de manière programmative une connexion-cadre d'entité à l'aide de mon ancienne chaîne de connexion, la connexion a échoué. Il s'est plaint de ne pas reconnaître la clé de la chaîne de connexion, "Server" à être exact.

J'ai découvert que j'avais besoin de le faire afin d'obtenir la connexion au format d'entité:

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = clientConnectionString;
entityBuilder.Metadata = "res://*/xxxxxxxxxx.csdl...";
Entities entities = new Entities(entityBuilder.ToString());

Pourquoi est-ce?
[.____] Quelle est la propriété de métadonnées?
[.____] Est-ce que cela va être un problème que c'est toujours la même chose pour plusieurs connexions différentes?
Que devrait-il être?
[.____] Y a-t-il quelque chose à ce sujet?

Merci d'avance!

Mise à jour 1: Merci pour la mise à jour Randolpho, mais ...
[.____] Toute la raison pour laquelle je vais avoir ce problème, c'est que je ne peux pas stocker les chaînes de connexion dans un fichier de configuration. La chaîne de connexion est déterminée de manière dynamique au moment de l'exécution par laquelle l'utilisateur se connecte.

Voici mon scénario exact:
[.____] Si l'utilisateur A est connecté, l'application tire des données de la base de données A. Si l'utilisateur B est connecté, l'application tire les données de la base de données B.
[.____] Les chaînes de connexion sont stockées dans une base de données principale et le nombre est potentiellement illimité. Chaque fois que j'ajoute un utilisateur, je ne veux pas avoir à aller sur le Web.config, sans oublier le fait que cela finirait par devenir énorme!

32
John Bubriski

Élargir sur la réponse de Randolpho:

La propriété de métadonnées indique spécifiquement l'emplacement du fichier .ssdl (modèle de stockage,) .csdl (modèle conceptuel,) et .msl (modèle de mappage). Ces trois fichiers sont essentiellement le modèle de données d'entité. Le qualificatif de style URI "RES: //" indique que les fichiers sont intégrés comme des ressources dans l'ensemble EDM compilé.

27
Dave Swersky