2013-04-13 20 views
5

Attualmente sto scrivendo un'applicazione Windows Store per Windows 8 e sto utilizzando SQLite per la persistenza sul database incorporato in una libreria di classi per le app di Windows. Sto cercando di unire i dati di due diverse tabelle nel mio database incorporato, ma SQLite continua a lanciare un'eccezione non supportata dal loro metodo GenerateCommand.SQLite join in tabelle database incorporate

Attualmente ho dati in entrambe le tabelle ed entrambi hanno un questionario in ogni tabella su cui partecipare. Ho provato due metodi diversi che generano entrambi lo stesso errore.

Il primo metodo:

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

Il secondo metodo:

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

io non sono esattamente sicuro di cosa mi manca qui ma deve essere qualcosa di semplice ed evidente.

risposta

10

Non manca nulla. I join via linq non sono supportati da Sqlite-net in questo momento. È possibile aggirare questo fornendo il proprio SQL e utilizzando il metodo Query. La vostra prima query dall'alto sarebbe simile:

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

Se siete così propenso, il metodo Query supporta anche i parametri. Da Sqlite-net readme:

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

Grazie per la risposta! Sembrava che SQLite-net non supportasse i join perché non aveva senso, ma ora capisco di più le restrizioni. –