2013-04-13 6 views
5

В настоящее время я пишу приложение для Windows Store для Windows 8, и я использую SQLite для сохранения на встроенной базе данных в библиотеке классов для приложений Windows. Я пытаюсь объединить данные из двух разных таблиц во встроенной базе данных, но SQLite продолжает бросать не поддерживаемое исключение из своего метода GenerateCommand.SQLite join во встроенных таблицах базы данных

В настоящее время у меня есть данные в обеих таблицах, и у них обоих есть вопрос в каждой таблице, чтобы присоединиться. Я пробовал два разных метода, которые и бросали ту же ошибку.

Первый метод:

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 не поддерживает объединения, потому что это не имеет смысла, но теперь я больше понимаю ограничения. –

Смежные вопросы