我为我的.NET应用程序创建了安装程序项目。安装程序还将所需的SQLite文件安装到特殊文件夹中 - >用户的应用程序数据漫游文件夹(C:\ Users \ Xxxx \ AppData \ Roaming \ MyCompany)。
应用程序使用Entity Framework访问该SQLite文件,在开发过程中,我已将Entity Framework配置为在本地计算机文件夹中使用SQLite。我不知道如何配置Entity Framework来读取/写入用户的应用程序数据文件夹。
答案 0 :(得分:0)
SQLite文件的连接字符串不允许相对路径。 部署应用程序时,您有两个选项:
1-在ur app.config相关文件中手动更改您的SQLite数据库文件的路径 - > connectionString部分。 我认为这不是一个干净的解决方案。
2-尝试在应用程序启动时或部署时以编程方式更改配置。这里有一个如何实现的示例代码:
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");
希望会有所帮助。