2013-04-13 2 views
5

현재 Windows 8 용 Windows 스토어 응용 프로그램을 작성 중이며 Windows 응용 프로그램 용 클래스 라이브러리에 포함 된 데이터베이스에서 지속성을 위해 SQLite를 사용하고 있습니다. 내 임베디드 데이터베이스에서 두 개의 다른 테이블의 데이터를 조인하려고하지만 SQLite는 GenerateCommand 메소드에서 지원되지 않는 예외를 던지기 시작합니다.SQLite는 임베디드 데이터베이스 테이블에 가입

저는 현재 두 테이블 모두에 데이터가 있으며 두 테이블 모두에 가입 할 각 테이블에 questionId가 있습니다. 둘 다 동일한 오류를 throw하는 두 가지 방법을 시도했습니다.

첫 번째 방법 :

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 :

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

답장을 보내 주셔서 감사합니다. SQLite-net이 조인을 지원하지 않는 것 같았습니다. 왜냐하면 이해가되지 않았기 때문입니다.하지만 이제는 더 많은 제한 사항을 이해합니다. –