El DataDirectory en las ConnectionStrings

Trabajando en fase de desarrollo, es más que común usar motores de base de datos de tipo fichero, como por ejemplo Access o, más comunmente SqlServer Express.

Por otra parte, en ASP.NET tenemos el directorio especial "App_Data", en el que es aconsejable tener esos ficheros de base de datos (los famosos .mdf, .mdb o .mdbx). Y es aconsejable por muchos motivos. Por ejemplo, que ASP.NET lo considera un directorio que requiere una seguridad especial (nadie podrá descargarse nada que esté dentro de ese directorio usando el navegador), o que el Visual Studio reconoce lo que hay dentro como bases de datos y nos facilita manejar esa base de datos con sólo un doble click.

Pero una de las funcionalidades que más me gusta de tener los ficheros de base de datos en el App_Data es que te permite usar la palabra especial |DataDirectory| dentro de tus ConnectionStrings. Es muy común tener una ConnectionString similar a esto:

Data Source=.\SQLEXPRESS;AttachDbFilename=C:\MisWebs\WebDePrueba\App_Data\personal.mdf;Integrated Security=True;

Al tener la ruta completa "C:\MisWebs\WebDePrueba\App_Data\personal.mdf", esa ConnectionString nos va a fallar si:
- Cambiamos el nombre de cualquiera de los directorios.
- Si movemos la aplicación a otra carpeta.
- Si queremos ver la aplicación en otro ordenador.
- Todo lo que se os ocurra que cambia el path de "personal.mdf".

Y eso es lo que soluciona el "DataDirectory". Veamos un ejemplo de uso del DataDirectory:

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\personal.mdf;Integrated Security=True;

Y sí, como nos imaginamos, la función de |DataDirectory|  es la de apuntar al directorio App_Data de nuestra aplicación...

¿¿Y tanto rollo sólo para esto?? Pues sí, es que hacía tiempo que no escribía un artículo y me apetecía explayarme