我正在修改 N-10-KittensDb 示例解决方案。 我了解如何创建 SQLite 数据库,但我希望使用现有数据库。我猜我需要将数据库复制到正确的 UI 数据文件夹中。也许它是在核心项目中完成的?如果是这样,如何将正确的路径注入(inject)正在运行的 Exec 中?由于 Core 可以跨多个 UI 使用?调用什么方法查看数据库是否存在或是否需要复制?
数据服务示例:
public DataService(ISQLiteConnectionFactory factory)
{
const string file = "Cats.sldb";
var connection = factory.Create(file);
connection.CreateTable<Kitten>();
}
我认为 Android、Phone、Touch 和 Wpf 的路径不同?
请指导我使用 Cirrious.MvvmCross.Plugins.Sqlite for Phone 或 Wpf 的示例代码。
谢谢 丹
最佳答案
默认情况下,每个平台都会在适合该平台的文件夹位置创建一个数据库 - 例如触摸用途:
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);
}
由于这种不匹配,为了跨平台共享相同的特定于数据库的副本代码,您可能会发现在每个平台上注入(inject)您自己的特定于平台的副本更容易 - 有关注入(inject)特定于平台的服务的更多信息,请参阅 http://slodge.blogspot.co.uk/2013/06/n31-injection-platform-specific.html
关于sqlite - 使用 MvvmCross 复制预填充的 SQLite 数据库的首选方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17665669/