Question


1) Par défaut, l'attribut connectionStringName des éléments de configuration est défini sur LocalSqlServer et, autant que je sache, cet attribut fait référence à la connexion définie dans le élément dans le fichier machine.config .

a) Je suppose que cette chaîne de connexion fait référence à la base de données aspnetdb.mdf ?!

b) Je comprends que aspnetdb.mdf est utilisé dans les cas où nous & n ° 8217 ne créons pas manuellement une base de données d'adhésion ou de profil (en appelant aspnet_regsql ). mais je ne & # 8217; ne comprends toujours pas le but des éléments de configuration dont l'attribut connectionStringName est défini sur LocalSqlServer ? À savoir quand et pourquoi auraient-ils besoin d'accéder à cette base de données?

c) Que se passera-t-il si nous définissons manuellement la base de données des membres via aspnet_regsql et évitons ainsi & # 8217; de ne pas utiliser aspnetdb.mdf ? Comment les éléments de configuration sauront-ils que nous & # 8217; n'utilisons pas aspnetdb.mdf et essayons donc d'accéder à la base de données que nous avons créée?


2) Si nous voulions que l'entrée LocalSqlServer de machine.config pointe vers un autre fichier de base de données, nous pourrions procéder comme suit:

      <connectionStrings>
        <remove name="LocalSqlServer" />
        <add name=”LocalSqlServer” ...  />
      </connectionStrings>

Je comprends que le but de l'élément <remove> est d'annuler tous les éléments déclarés précédemment portant le même nom, mais dans l'exemple ci-dessus, nous avons simplement modifié l'attribut d'une connexion existante et, en tant que tel machine.config est-ce que & # 8217; t n'a pas deux connexions avec le même nom, alors pourquoi avons-nous dû inclure <=> élément?


merci

Était-ce utile?

La solution

Extrait de l’article de l'élément connectionStrings sur MSDN :

  

Chaînes de connexion contenues   dans un fichier de configuration parent sont   hérité, sauf si l'élément clair est   utilisé dans le fichier de configuration enfant.   Le défaut suivant   L'élément connectionStrings est   configuré dans le fichier Machine.config.   Copier le code

<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated
        Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User
        Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>

Donc, si cette section du fichier de configuration n'est pas modifiée, elle possède automatiquement cette chaîne de connexion.

Autres conseils

La convention utilisée est l’une des nombreuses qui auraient pu être choisies pour accomplir la même tâche, mais les membres de l’équipe ASP.NET de MS à l’époque sont vraiment les seuls à pouvoir dire & '; pourquoi " cet ensemble de conventions a été utilisé. Je crois comprendre que le but de la configuration actuelle est de rendre le débutant le plus facile possible. c’est-à-dire exécuter des assistants, générer automatiquement une base de données avec des paramètres préconfigurés, glisser-déposer quelques contrôles de sécurité pour qu’ils aient quelque chose à travailler. Étant donné que cette solution a été conçue pour les débutants, les développeurs les plus expérimentés se retrouvent dans le même groupe de questions que maintenant car il n’est pas simple de déterminer la façon dont les éléments s’emboîtent.

L'une des choses que vous remarquerez dans machine.config est que tous les fournisseurs (adhésion, rôles, profil, etc.) utilisent ce nom de chaîne de connexion LocalSqlServer, qui prend à nouveau en charge le scénario pour débutant. Par conséquent, pour utiliser votre propre base de données, vous devez supprimer la définition par défaut de LocalSqlServer et définir la vôtre. Il n'y a pas d'élément de remplacement dans la définition du fichier de configuration, vous devez donc utiliser la séquence remove / add, qui est l'équivalent logique. En modifiant la chaîne de connexion et en laissant son nom LocalSqlServer, tous les fournisseurs de machine.config sont dirigés vers votre base de données. Cela vous donne les définitions de fournisseur par défaut pour votre base de données.

Désormais, si vous souhaitez personnaliser les définitions de fournisseur, vous pouvez les ajouter à votre propre Web.config et modifier leurs paramètres. À ce stade, vous pouvez laisser LocalSqlServer en tant que chaîne de connexion pour les définitions de fournisseur personnalisées ou créer votre propre chaîne de connexion, puis pointer vos définitions de fournisseur personnalisé sur votre propre chaîne de connexion. Vous n'aurez plus à vous soucier de LocalSqlServer. Si vous supprimez LocalSqlServer de votre fichier web.config, vous devrez ajouter des définitions de fournisseur personnalisées à votre propre site web.config qui référence votre chaîne de base de données.

J'espère que cela vous aidera,

Joe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top