在SQLite中存储应用程序设置

3
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:“我正在开发我的第一个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

代码看起来不错:

 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 上演示的 demo 可以在 https://github.com/slodge/DemoFromEvolve 找到 - 它在 nuget 包方面略有过时,但是DataService.cs 中的 SQLite 代码是最新的。


谢谢Stuart。异常与AppSettings类型有关。AppSettings继承自MvxViewModel。我创建了一个新的AppSettingsEntityClass普通类,只包含CLR类型的属性,用于存储所需的信息,现在一切正常运行。 - Daní
如果您需要在appsettings中使用inpc,请尝试使用mvxnotifypropertychanged基类。 - Stuart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接