2013-06-10 1 views
2

J'ai un schéma de base de données et j'essaie de créer une bibliothèque "base" autour d'elle. J'ai plusieurs autres applications qui utilisent les mêmes tables de base et je voudrais mettre le code en commun.Résumé DataContext dans la DLL

Donc je suppose que j'ai deux questions alors. Tout d'abord, j'utilise C#/Asp.net 4.0 et Linq2Sql parce que la conception de ma base de données existe depuis un moment et que je n'ai pas eu le temps de la convertir en framework Entity.

J'ai créé un fichier .dbml avec la fonctionnalité de base qui fournit un contexte de données Linq que nous appellerons BaseContext et qui contient toutes les tables communes. J'ai alors du code supplémentaire dans les classes partielles; c'est le code que j'essaie de rendre commun. Je compile ensuite BaseContext dans une DLL. J'ai alors une application (s) qui va étendre le schéma et créer un nouveau DataContext qui dérive de BaseContext. C'est mon plan sur papier, mais 1) comment fonctionne DataContexts héritant?

Deuxièmement, j'ai des problèmes avec les chaînes de connexion entre les applications. Je n'ai jamais besoin du code dans la DLL pour s'exécuter, mais je dois en quelque sorte pouvoir définir la chaîne de connexion de l'application dérivée afin que le code commun soit utile. 2) Existe-t-il un moyen de remplacer une chaîne de connexion dans une DLL?

Répondre

0

Comment fonctionne l'héritage DataContexts?

Comme si vous héritiez de quelque chose d'autre. Ce n'est pas différent.

Existe-t-il un moyen de remplacer une chaîne de connexion dans une DLL?

Les bibliothèques de classes ne contiennent généralement pas leurs chaînes de connexion; le processus hôte le fait. Le processus hôte est généralement une application client, ou, mieux encore, un service (WCF, etc ...). Les chaînes de connexion sont généralement utilisées dans le fichier de configuration de l'hôte.

Remarque: La raison pour laquelle les bibliothèques de classes (DLL) ne contiennent pas de chaînes de connexion est qu'elles ne savent pas dans quel contexte (programme) elles s'exécutent. Dans le code de la bibliothèque de classes, il peut toujours accéder à ConfigurationManager pour obtenir une chaîne de connexion. Le processus hôte doit simplement s'assurer que la chaîne de connexion est définie dans son app.config.

+0

La DLL peut-elle toujours accéder au contenu ConfigurationManager défini par l'application à l'aide de la DLL? C'est exactement ce que je veux! Cela nécessite-t-il de créer un fichier app.config pour la DLL, puis un fichier web.config pour l'application utilisant la DLL? – Mark

+0

Oui, la DLL accède au fichier de configuration de l'application d'hébergement. Les DLL n'ont pas app.configs; juste les processus hôtes. –

+0

Merci. Je vais essayer cela. – Mark