我正在修改N-10-KittensDb样本解决方案。 我看到如何创建SQLite数据库,但我希望使用现有的数据库。我猜我需要将数据库复制到正确的UI数据文件夹。也许它是在Core项目中完成的?如果是这样,如何将正确的路径注入到正在运行的Exec中?因为Core可以在许多UI中使用?调用什么方法来查看数据库是否存在或需要复制?
来自DataService的示例:
public DataService(ISQLiteConnectionFactory factory)
{
const string file = "Cats.sldb";
var connection = factory.Create(file);
connection.CreateTable<Kitten>();
}
我相信Android vs Phone vs Touch vs Wpf的路径不同?
请指导我使用Cirrious.MvvmCross.Plugins.Sqlite for Phone或Wpf的示例代码。
谢谢 丹
答案 0 :(得分:3)
默认情况下,每个平台都会在适合平台的文件夹位置创建数据库 - 例如Touch使用:
public ISQLiteConnection Create(string address)
{
var path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
return new SQLiteConnection(Path.Combine(path, address));
}
要读取/写入文件,MvvmCross确实捆绑了一个文件插件 - 这也默认在平台特定位置运行 - 但两者可能不完全匹配 - 例如见:
protected override string FullPath(string path)
{
if (path.StartsWith(ResScheme))
return path.Substring(ResScheme.Length);
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), path);
}
由于这种不匹配,为了跨平台共享相同的特定于数据库的复制代码,您可能会发现在每个平台上注入自己的平台特定副本更容易 - 有关注入平台特定服务的更多信息,请参阅{{3 }}