2009-03-24 6 views
1

Une classe LinqToSQL Context est annotée avec DatabaseAttribute par défaut. C'est facultatif cependant. Dans n'importe quel scénario je peux penser que vous utiliseriez la chaîne de connexion pour pointer sur une base de données, alors quelle est la raison pour cela. Maintenant, j'ai évidemment lu des documents. Dans quel état, vous l'utilisez pour spécifier une base de données par défaut si vous souhaitez l'omettre de la chaîne de connexion. Mais ... pourquoi oh pourquoi voudriez-vous faire cela? Aucune suggestion?Quel est le but de DatabaseAttribute dans LinqToSQL?

Répondre

0

Hmm .... bonne question. Je ne peux pas penser à un bon usage pour cela. Si vous vouliez couvrir plusieurs bases de données (différents contextes de données) à partir d'une seule connexion (ce qui n'est pas une bonne idée en premier lieu), cela resterait inutile, puisqu'il serait corrigé pour toutes les instances des données -le contexte.

Dans tous les cas sensibles auxquels je peux penser, la connexion définit la base de données, ou c'est un non-problème (fichiers db autonomes, etc.). Je me demande si ce n'était pas juste mis là parce qu'il (la connaissance du nom de la base de données) existait, et donc il serait possible (en théorie) de la même manière ...

0

Il est difficile de savoir quel est le design équipe a pensé à l'époque.

Je suppose qu'il est là pour permettre des configurations facultatives avec une chaîne de connexion générale par défaut dans une application avec plusieurs bases de données. Ce n'est pas supporté intégré donc j'en doute. Cela permettrait à quelque chose comme:

<add name="GeneralConnection" ... /> 
<add name="GeneralConnection.SomeDataContext" ... /> 

Tous les contextes de données seraient configurés pour pointer vers le GeneralConnection. Un code supplémentaire pour extraire l'instance de contexte de données vérifie si GeneralConnection.ThatDataContext est présent et utilise le constructeur avec la chaîne de connexion dans ce cas.

C'est juste une supposition. Je n'ai pas eu un besoin semblable, et je ne pense pas que je compterais sur quelque chose comme ça.

Questions connexes