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