Pregunta


1) Por defecto, los elementos de configuración tienen su atributo connectionStringName establecido en LocalSqlServer , y que yo sepa, este atributo se refiere a la conexión definida en el elemento en el archivo machine.config .

a) Supongo que esta cadena de conexión se refiere a la base de datos aspnetdb.mdf ?!

b) Entiendo que aspnetdb.mdf se usa en los casos en que no & # 8217; t creamos manualmente la base de datos de membresía o perfil (llamando a aspnet_regsql ), pero todavía no & # 8217; no entiendo el propósito de los elementos de configuración que tienen el atributo connectionStringName establecido en LocalSqlServer . A saber, ¿cuándo y por qué necesitarían acceder a esta base de datos?

c) ¿Qué sucede si configuramos manualmente la base de datos de membresía a través de aspnet_regsql y, por lo tanto, no & # 8217; t use aspnetdb.mdf ? ¿Cómo sabrán los elementos de configuración que & # 8217; no estamos usando aspnetdb.mdf y por lo tanto intentaremos acceder a la base de datos que creamos?


2) Si quisiéramos que la entrada LocalSqlServer de machine.config apuntara a algún otro archivo de base de datos, podríamos hacer lo siguiente:

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

Entiendo que el propósito del elemento <remove> es cancelar cualquier elemento previamente declarado con el mismo nombre, pero en el ejemplo anterior simplemente cambiamos el atributo de la conexión ya existente, y como tal machine.config no & # 8217; tiene dos conexiones con el mismo nombre, entonces ¿por qué tuvimos que incluir el elemento <=>?


gracias

¿Fue útil?

Solución

Del artículo del elemento connectionStrings en MSDN :

  

Cadenas de conexión que están contenidas   en un archivo de configuración principal son   heredado, a menos que el elemento claro sea   utilizado en el archivo de configuración secundario.   El siguiente valor predeterminado   El elemento connectionStrings es   configurado en el archivo Machine.config.   Copiar código

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

Entonces, si esa sección del archivo de configuración no se modifica, automáticamente tiene esa cadena de conexión.

Otros consejos

La convención utilizada es una de las muchas que podrían haberse elegido para realizar la misma tarea, pero las personas que estaban en el equipo de ASP.NET en MS en ese momento son realmente las únicas que pueden decir " por qué " se utilizó ese conjunto de convenciones. Tengo entendido que el propósito de la configuración actual es hacer que sea más fácil para un principiante comenzar. es decir, ejecute algunos asistentes, genere automáticamente una base de datos con configuraciones preconfiguradas, arrastre y suelte algunos controles de seguridad y tienen algo con lo que trabajar. Dado que esto fue diseñado para principiantes, los desarrolladores más experimentados se encuentran con el mismo conjunto de preguntas que tienes ahora porque investigar cómo encajan las piezas no es simple.

Una de las cosas que notará en machine.config es que todos los proveedores (Membresía, Roles, Perfil, etc.) usan este nombre de cadena de conexión LocalSqlServer, que nuevamente admite el escenario de principiante. Por lo tanto, para usar su propia base de datos, debe eliminar la definición predeterminada de LocalSqlServer y definir la suya propia. No hay un elemento de reemplazo en la definición del archivo de configuración, por lo que debe usar la secuencia remove / add, que es el equivalente lógico. Al cambiar la cadena de conexión y dejar su nombre como LocalSqlServer, todos los proveedores en machine.config apuntan a su base de datos. Esto le proporciona las definiciones de proveedor predeterminadas para su base de datos.

Ahora, si desea personalizar las definiciones del proveedor, puede agregarlas a su propio Web.config y cambiar su configuración. En ese momento, puede dejar LocalSqlServer como la cadena de conexión para las definiciones de proveedor personalizadas o puede crear su propia cadena de conexión y luego apuntar sus definiciones de proveedor personalizadas a su propia cadena de conexión y ya no tendrá que preocuparse por LocalSqlServer. Si elimina LocalSqlServer de su web.config, deberá agregar definiciones de proveedor personalizadas a su propio web.config que hagan referencia a la cadena de su base de datos.

Espero que esto ayude,

Joe

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top