7

我目前正在为 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();

第二种方法:

    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();

我不确定我在这里缺少什么,但它必须简单明了。

4

1 回答 1

12

你没有错过任何东西。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();

如果您愿意,该Query方法还支持参数。来自Sqlite-net 自述文件

db.Query<Val>(
    "select 'Price' as 'Money', 'Time' as 'Date' from Valuation where StockId = ?",
     stock.Id);
于 2013-04-15T03:44:51.773 回答