public JArray Retrieve(string soupName, params long[] soupEntryIds)
 {
     lock (smartlock)
     {
         DBHelper db            = Database;
         string   soupTableName = db.GetSoupTableName(soupName);
         var      result        = new JArray();
         if (String.IsNullOrWhiteSpace(soupTableName))
         {
             throw new SmartStoreException("Soup: " + soupName + " does not exist");
         }
         using (ISQLiteStatement statement = db.Query(soupTableName, new[] { SoupCol }, String.Empty, String.Empty,
                                                      GetSoupEntryIdsPredicate(soupEntryIds)))
         {
             if (statement.DataCount > 0)
             {
                 do
                 {
                     string raw = statement.GetText(statement.ColumnIndex(SoupCol));
                     result.Add(JObject.Parse(raw));
                 } while (statement.Step() == SQLiteResult.ROW);
             }
         }
         return(result);
     }
 }