3

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

在应用程序启动时,我想从 SQLite 检索应用程序设置。我尝试的是: var connection = factory.Create("myAppDB"); 返回连接.Get(1);

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

如果我尝试使用以下方法创建表:

var connection = factory.Create("myAppDB");
connection.CreateTable<AppSettings>();

我得到下一个异常:“System.NotSupportedException:不知道 Cirrious.MvvmCross.ViewModels.MvxRequestedBy”

有什么帮助吗?谢谢

4

1 回答 1

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
}

我很快就会为此发布一个完整的 repo 和 N+1 视频——与此同时,我在 Evolve 做的演示在https://github.com/slodge/DemoFromEvolve——就 nuget 包而言它有点过时了,但是DataService.cs中的 SQLite 代码是最新的。

于 2013-05-04T06:26:05.693 回答