0

我为我的 .NET 应用程序创建了安装程序项目。安装程序还将所需的 SQLite 文件安装到特殊文件夹 -> 用户的应用程序数据漫游文件夹 (C:\Users\Xxxx\AppData\Roaming\MyCompany)。

该应用程序使用实体框架来访问该 SQLite 文件,并且在开发过程中,我已将实体框架配置为在我的本地计算机文件夹上使用 SQLite。我不知道如何配置实体框架以读取/写入用户的应用程序数据文件夹。

4

1 回答 1

0

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");

希望会有所帮助。

于 2013-10-04T15:46:29.383 回答