2013-05-03 96 views
3

我正在开发我的第一个MvvmCross应用程序。我试图用SQLite存储应用程序设置,但我收到了一些例外,我害怕我错过了一些东西。希望有人能指导我使用MvvmCross SQLite。在SQLite中存储应用程序设置

在应用程序启动时,我想从SQLite中检索应用程序设置。我试过的是: var connection = factory.Create(“myAppDB”); (1);返回connection.get(1);

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

如果我试图创建一个表:

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

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

任何帮帮我?由于

回答

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个视频 - 在此期间,我在进化所做的演示是在https://github.com/slodge/DemoFromEvolve - 它在nuget包方面略有过时,但DataService.cs中的SQLite代码是最新的。

+0

谢谢斯图尔特。该例外与AppSettings类型有关。 AppSettings从MvxViewModel继承。我创建了一个新的AppSettingsEntityClass普通类,只有CLR类型的属性来存储所需的信息,现在工作正常。 – 2013-05-04 08:11:44

+0

如果您在appsettings中需要inpc,请尝试mvxnotifypropertychanged基类 – Stuart 2013-05-04 10:58:18

相关问题