c# - SQLite 加入嵌入式数据库表

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

第二种方法:

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

我不确定我在这里遗漏了什么,但它必须是简单明了的东西。

最佳答案

你没有遗漏任何东西。 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 readme :

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

关于c# - SQLite 加入嵌入式数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15993313/

相关文章:

c# - Entity Framework Core : Is it safe to delete Migration. Designer.cs 如果我们永远不会恢复迁移?

c# - 初始化后动态注册按钮点击事件

c# - 什么是vc++中的HWND

python - pysqlite 的 IntegrityError : distinguish 'NOT NULL' from 'UNIQUE' violation

android - IBM Worklight 将数据从 SQLite 检索到 MySQL

mysql - 通过使用 LIMIT 1 和 WHERE 子句匹配表之外的列值的 SELECT 子查询来连接表

mysql - 加入更多父表

c# - 正则表达式提取两个字符串之间的字符串列表

java - 如何加密 SQLite 数据库

mysql - SQL SELECT 名称按 id