net getconnectionstring framework dbcontextoptions connectionstring asp .net sqlite configuration connection-string app-config

.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