2013-04-13 13 views
5

Ich schreibe gerade eine Windows Store-Anwendung für Windows 8 und ich verwende SQLite für die Persistenz in der eingebetteten Datenbank in einer Klassenbibliothek für Windows-Anwendungen. Ich versuche, Daten aus zwei verschiedenen Tabellen in meiner eingebetteten Datenbank beizutreten, aber SQLite wirft weiterhin eine nicht unterstützte Ausnahme von ihrer GenerateCommand-Methode.SQLite beitreten in eingebetteten Datenbanktabellen

Ich habe derzeit Daten in beiden Tabellen und sie haben beide eine Frage-ID in jeder Tabelle zu verbinden. Ich habe zwei verschiedene Methoden ausprobiert, die beide den gleichen Fehler auslösen.

Die erste Methode:

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

Die zweite Methode:

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

Ich bin mir nicht ganz sicher, was ich bin fehlt hier, aber es hat etwas einfach und klar sein.

Antwort

10

Sie verpassen nichts. Joins über linq werden zu diesem Zeitpunkt noch nicht von Sqlite-net unterstützt. Sie können dies umgehen, indem Sie Ihr eigenes SQL bereitstellen und die Methode Query verwenden. Ihre erste Abfrage von oben würde in etwa so aussehen:

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

Wenn Sie so geneigt sind, die Query Methode unterstützt auch Parameter. Von der Sqlite-net readme:

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

Vielen Dank für Ihre Antwort! Es schien, als ob SQLite-net Joins nicht unterstützte, weil es keinen Sinn ergab, aber jetzt verstehe ich die Einschränkungen mehr. –