.net - getconnectionstring - get connection string c# asp net core
Ruta relativa de la cadena de conexión App.config (3)
Necesito configurar la aplicación. Configurar la cadena de conexión sqlite. Quiero establecer la ruta relativa a las carpetas de depuración / liberación, el archivo de la base de datos se copiará en esas carpetas.
<add name="EmailsSQLite" connectionString="data source=c:/Users/Test/Documents/Visual Studio 2008/Projects/TestConsole/Emails/data/EmailDatabase.sqlite" providerName="System.Data.SQLite"/>
y quiero tener algo como:
<add name="EmailsSQLite" connectionString="data source=/data/EmailDatabase.sqlite" providerName="System.Data.SQLite"/>
¿Es eso posible?
Intenta usar un "." antes de la primera barra invertida en la parte del origen de datos de la cadena.
p.ej.
data source=./data/EmailDatabase.sqlite
Puede especificar una ruta relativa como se describe en la respuesta de Lefty.
Sin embargo, esto será relativo al directorio de trabajo actual, que no será necesariamente el directorio que contiene su ejecutable.
Una forma de evitar esto es modificar la cadena de conexión antes de usarla, por ejemplo
En app.config:
connectionString="data source={AppDir}/data/EmailDatabase.sqlite
En tu código:
ConnectionStringSettings c = ConfigurationManager.ConnectionStrings[name];
if (c == null)
{
... handle missing connection string ...
}
string fixedConnectionString = c.ConnectionString.Replace("{AppDir}", AppDomain.CurrentDomain.BaseDirectory);
... use fixedConnectionString
Sí, es posible. Intenta usar | DataDirectory |.
En App.config
<add name="SqliteConnectionString" connectionString="Data Source=|DataDirectory|/Database.sqlite;" providerName="System.Data.SQLite"/>
Más información en esta página https://msdn.microsoft.com/en-us/library/cc716756.aspx