在SQLite中存储应用程序设置

时间:2013-05-03 23:06:41

标签: sqlite xamarin mvvmcross

我正在开发我的第一个MvvmCross应用程序。我正在尝试使用SQLite存储应用程序设置,但我遇到了一些例外情况,我担心我会遗漏一些东西。希望有人可以指导我使用MvvmCross SQLite。

在应用启动时,我想从SQLite中检索应用设置。我尝试的是:     var connection = factory.Create(“myAppDB”); return connection.Get(1);

此时我收到异常,因为第一次启动应用时,AppSettings表不存在。

如果我尝试用:

创建表格
var connection = factory.Create("myAppDB");
connection.CreateTable<AppSettings>();

我得到了下一个例外:     “System.NotSupportedException:不知道Cirrious.MvvmCross.ViewModels.MvxRequestedBy”

有任何帮助吗?感谢

1 个答案:

答案 0 :(得分:0)

代码看起来不错:

 var connection = factory.Create("mydb.sq;");
 connection.CreateTable<TableType>();

我认为System.NotSupportedException: Don't know about Cirrious.MvvmCross.ViewModels.MvxRequestedBy与您发布的SQLite代码无关。我怀疑这是来自你的启动代码的其他部分。

如果有帮助,我的标准SQLite示例代码如下:

public class Kitten
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Name { get; set; }
    public int Price { get; set; }
    public string ImageUrl { get; set; }
}

public class DataService
{
    private readonly ISQLiteConnection _connection;

    public DataService(ISQLiteConnectionFactory factory)
    {
        _connection = factory.Create("kittens.sql");
        _connection.CreateTable<Kitten>();
    }

    public List<Kitten> KittensMatching(string nameFilter)
    {
        return _connection.Table<Kitten>()
                    .OrderBy(x => x.Price)
                    .Where(x => x.Name.Contains(nameFilter))
                    .ToList();
    }

    // other db methods
}

我将很快发布一个完整的回购和N + 1视频 - 与此同时,我在Evolve上做的演示在https://github.com/slodge/DemoFromEvolve - 它在nuget包方面略有过时但是SQLite代码在DataService.cs中是最新的。