的連接字符串的SQLite文件不允許相對路徑。 當部署應用程序時,您有2個選項:
1-在app.config相關文件 - > connectionString部分中手動更改路徑爲您的SQLite數據庫文件。 我覺得不是一個乾淨的解決方案。
2-嘗試以編程更改應用程序的或就deployement開始時的配置。這裏的示例代碼如何實現:
string _EntityContainerName = "";//Ur entity container name
Configuration _Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//DataSource
System.Data.SQLite.SQLiteConnectionStringBuilder _SqlBuilder = new System.Data.SQLite.SQLiteConnectionStringBuilder();
_SqlBuilder.DataSource = @"C:\Users\Xxxx\AppData\Roaming\MyCompany\{UrSQLiteFileName}.s3db";
string _ProviderString = _SqlBuilder.ToString();
//ConnectionString
EntityConnectionStringBuilder _DataEntityBuilder = new EntityConnectionStringBuilder();
_DataEntityBuilder.Provider = "System.Data.SQLite";
_DataEntityBuilder.ProviderConnectionString = _ProviderString;
_DataEntityBuilder.Metadata = string.Format(@"res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl", _EntityContainerName);
string _DataConnectionString = _DataEntityBuilder.ToString();
_Configuration.ConnectionStrings.ConnectionStrings[_EntityContainerName].ConnectionString = _DataConnectionString;
_Configuration.ConnectionStrings.ConnectionStrings[_EntityContainerName].ProviderName = "System.Data.EntityClient";
_Configuration.Save(System.Configuration.ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");
希望將有所幫助。
感謝您的幫助。我實際上從另一個問題找到了一個很好的解決方案http://stackoverflow.com/questions/15037937/appdata-in-connection-string-is-not-substituted-for-the-actual-folder其中連接字符串指向DataDirectory和在應用程序啓動時設置。 – Nuts