2013-04-13 22 views
5

Tôi hiện đang viết một Ứng dụng Windows Store cho Windows 8 và tôi đang sử dụng SQLite để duy trì cơ sở dữ liệu nhúng trong thư viện lớp cho các ứng dụng windows. Tôi đang cố gắng để tham gia dữ liệu từ hai bảng khác nhau trong cơ sở dữ liệu nhúng của tôi nhưng SQLite giữ ném một ngoại lệ không được hỗ trợ từ phương thức GenerateCommand của họ.Tham gia SQLite trong các bảng cơ sở dữ liệu nhúng

Tôi hiện đang có dữ liệu trong cả hai bảng và cả hai đều có câu hỏi trong mỗi bảng để tham gia. Tôi đã thử hai phương pháp khác nhau mà cả hai đều ném cùng một lỗi.

Phương pháp thứ nhất:

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

Phương pháp thứ hai:

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

Tôi không chắc chắn chính xác những gì tôi đang mất tích ở đây nhưng nó phải là cái gì đó đơn giản và rõ ràng.

Trả lời

10

Bạn không bỏ sót bất cứ điều gì. Tham gia qua LINQ không được hỗ trợ bởi Sqlite-net tại thời điểm này. Bạn có thể giải quyết vấn đề này bằng cách cung cấp SQL của riêng bạn và sử dụng phương thức Query. Truy vấn đầu tiên của bạn từ trên cao sẽ trông giống như sau:

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

Nếu bạn nghiêng, phương pháp Query cũng hỗ trợ thông số. Từ số Sqlite-net readme:

+0

Cảm ơn câu trả lời của bạn! Dường như SQLite-net không hỗ trợ kết nối vì nó không có ý nghĩa nhưng bây giờ tôi hiểu các hạn chế hơn. –