我希望在不同的服务器上部署我的项目,我更喜欢能够使用相对路径指定连接字符串。但是似乎无法使用相对路径,请问是否有什么窍门可以解决这个问题?
我希望在不同的服务器上部署我的项目,我更喜欢能够使用相对路径指定连接字符串。但是似乎无法使用相对路径,请问是否有什么窍门可以解决这个问题?
您可以在应用程序中构建绝对路径,并将其传递给连接字符串。
因此,如果您知道数据库文件位于应用程序文件夹的database
子文件夹中,您可以执行类似以下内容的操作(C#):
string relativePath = @"database\myfile.s3db";
string currentPath;
string absolutePath;
string connectionString;
currentPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
absolutePath = System.IO.Path.Combine(currentPath,relativePath);
connectionString = string.Format("DataSource={0}", absolutePath);
SQLiteConnection cnn = new SQLiteConnection(connectionString);
(可能有人可以纠正我如何获取当前路径)。
"Data Source=|DataDirectory|mydb.db;..."
|DataDirectory|
指向你的应用程序所在的目录。我使用NHibernate,并且它与以下内容一起工作:<add key="hibernate.connection.connection_string"
value="Data Source=|DataDirectory|mydb.db;Version=3;Compress=False;synchronous=OFF;" >
字符串 currentPath = System.IO.Path.GetDirectoryName( Application.ExecutablePath );
这段代码是获取当前应用程序的路径。
AppDomain.CurrentDomain.BaseDirectory
。 - Kind Contributor