如何在Windows Phone Runtime中的数据库中存储数据?

时间:2014-10-14 18:30:25

标签: c# sqlite windows-phone-8 windows-runtime windows-phone-8.1

经过3天的搜索,我现在放弃了!

我想将数据存储在Windows Phone Runtime应用程序的数据库中,但无法找到合适的数据库解决方案。

我检查了SQLite-net,但它并不支持类之间的简单关系。所以我无法在课程中定义项目列表。

然后我安装了SQLite-net Extensions作为该问题的解决方案。但它没有Windows Phone Runtime的正确包裹。它需要ISQLitePlatform实现作为SQLiteConnection()中的参数,只有上帝知道在哪里找到正确的dll。

所以我的问题是,所有这些应用程序都可用,他们使用什么数据库?如何将数据存储在数据库中?

1 个答案:

答案 0 :(得分:0)

修改

他们似乎在几个小时前解决了这个问题。请参阅:https://bitbucket.org/twincoders/sqlite-net-extensions/issue/27/error-while-adding-sqlite-net-extension-to

旧帖子

是。你是对的。默认情况下不包括此项,您必须自己做很多事情。但实施关系并不难:

// Query entity A
var AList = App.DB.Table<EntityA>().ToList();
if (AList == null || AList.Count == 0)
    return;
// Get entity B for each item
foreach (EntityA ea in AList)
{
    // I'm retreiving just a single element here.. of course you can easily pull a list here for one to many relationships..
    var eb = App.DB.Table<EntityB>().Where(b => b.EntityAIndex == ea.DBId).FirstOrDefault();
    if (eb == null)
        continue;
    ea.EntityB = eb;
}

但SQLite是这里的方式,除非你不使用数以百万计的记录从你的数据库中拉出一个简单的关系不会花费太多时间(我有三度关系并且它们被检索即刻)。您只需在向数据库添加对象时手动设置外键即可。但这只是一行代码。

entityA.entityBId = entityB.DBId;

同样编写代码来读取具有关系的实体并不是那么麻烦。当然,你不想手动编写,但只需要几行。

顺便说一句:我使用的是sqlite-net。