我遇到了大麻烦,因为我的Sqlite数据库文件存储在用户/ AppData /本地/虚拟商店/程序文件目录中,而不是存储在程序文件中。在创建安装程序期间,我已将默认安装路径设置为 C:\ Program Files 。任何人都可以告诉我如何将数据库文件存储在程序文件中。由于此问题,我的应用程序每次在用户打开应用程序时重新创建数据库,因为它无法找到数据库文件。提前谢谢......
答案 0 :(得分:0)
我建议您在app.config
配置文件中传递路径信息。例子
<appSettings>
<add key="dbpath" value="c:/program files" />
</appSettings>
并从config读取路径。
public static string GetConfigurationValue()
{
if(ConfigurationManager.AppSettings["dbpath"]!=null)
return ConfigurationManager.AppSettings["dbpath"];
else
return string.Empty;
}
答案 1 :(得分:0)
感谢您的提问。我也遇到了在UWP应用程序的bin / debug中创建文件的问题,运行sqlite EF核心。这就是我找到解决方案的方式。
我发现完全避免程序目录和权限问题,在我的情况下。对于这些类型的情况有一个很好的处理程序,其中sqlite文件总是在同一个地方创建,但是相当模糊,带有guid目录
C:\Users\(me)\AppData\Local\Packages\7ef58417-7e0c-4365-a1b8-0bdb6ea01c64_mdkyq2wgmdezj\LocalState
这将检查sqlite db文件是否存在,如果不存在则创建它,EF核心创建表。然后我api调用填充帐户表。
using (var dbi = new TimeTrackerUwpContext())
{
var databaseCreator = (RelationalDatabaseCreator)dbi.Database.GetService<IDatabaseCreator>();
if (!databaseCreator.Exists())
await databaseCreator.EnsureCreatedAsync();
else
dbi.Database.ExecuteSqlCommand("DELETE FROM [Account];");
var acc = GetAccoutsToSync().Result;
if (acc.Count == 0)
return;
await dbi.Account.AddRangeAsync(acc);
await dbi.SaveChangesAsync();
}
我还必须创建一个类库,以我想要的方式运行EF核心,其中包含模型 等待databaseCreator.EnsureCreatedAsync(); 使用
我希望这会有所帮助。