2013-04-13 18 views
5

現在、Windows 8用のWindowsストアアプリケーションを作成しています。Windowsアプリケーション用のクラスライブラリの埋め込みデータベースで永続性を維持するためにSQLiteを使用しています。私は埋め込まれたデータベースの2つの異なるテーブルからデータを結合しようとしていますが、SQLiteはGenerateCommandメソッドからサポートされていない例外をスローし続けます。埋め込みデータベーステーブルのSQLite結合

私は現在、両方のテーブルにデータを持っていますが、どちらもそれぞれのテーブルにquestionIdを持って参加しています。私は同じエラーを投げる2つの異なる方法を試しました。

最初の方法:

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

私はここに欠けているかを正確にはわからないが、それは単純で明白なものである必要があります。

答えて

10

あなたは何も欠けていません。 linq経由の結合は、現時点ではSqlite-netでサポートされていません。この問題を回避するには、独自の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

+0

ありがとうございました! SQLite-netは結合をサポートしていなかったように思えました。なぜなら、それは理にかなっていないからです。 –