SQLite加入嵌入式数据库表

Liz*_*ner 6 c# sqlite join windows-store-apps sqlite-net

我目前正在为Windows 8编写一个Windows应用商店应用程序,我正在使用SQLite在Windows应用程序的类库中对嵌入式数据库进行持久化.我试图从我的嵌入式数据库中的两个不同表中加入数据,但SQLite不断从其GenerateCommand方法中抛出一个不受支持的异常.

我目前在两个表中都有数据,并且每个表中都有一个questionId可以加入.我尝试了两种不同的方法,它们都抛出相同的错误.

第一种方法:

    var q = (from gameTable in db.Table<Model.GameSaved>()
                 join qTable in db.Table<Questions>() on gameTable.QuestionId equals qTable.QuestionId
                 select qTable
                ).First();
Run Code Online (Sandbox Code Playgroud)

第二种方法:

    var q =
                (from question in db.Table<Model.GameSaved>()
                 select question
                ).Join(db.Table<Questions>(), 
                       game => game.QuestionId, 
                       questionObject => questionObject.QuestionId,
                       (game,questionObject) => questionObject)
                 .First();
Run Code Online (Sandbox Code Playgroud)

我不确定我在这里缺少什么,但它必须是简单而明显的东西.

chu*_*e x 11

你没有遗漏任何东西.目前Sqlite-net不支持通过linq加入.您可以通过提供自己的SQL并使用该Query方法来解决此问题.您上面的第一个查询看起来像:

var q = db.Query<Questions>(
    "select Q.* from Questions Q inner join GameSaved G"
    + " on Q.QuestionId = G.QuestionId"
).First();
Run Code Online (Sandbox Code Playgroud)

如果你这么倾向,该Query方法也支持参数.来自Sqlite-net自述文件:

db.Query<Val>(
    "select 'Price' as 'Money', 'Time' as 'Date' from Valuation where StockId = ?",
     stock.Id);
Run Code Online (Sandbox Code Playgroud)