私の Windows Phone 8 アプリケーション (C#/XAML/SQLite) は、「ベータ版」として Windows ストアに公開し、スマートフォン (Lumia 620) にインストールした後、動作が非常に遅くなります。これらの「フリーズ」は、私のアプリケーションがsqliteデータベースファイルへの選択を実行する場所です。また、データベース クエリがないページでは、すべてが完璧に機能します。だからその通りだと思います。
私が理解していないのは、まったく同じ設定のアプリケーションが、Visual Studio からデプロイすると正常に動作するということです。
nokia.com のこのトピックで説明されているように、sqlite を使用しています - http://developer.nokia.com/Community/Wiki/How_to_use_SQLite_in_Windows_Phone
私のソリューションには c++ sqlite プロジェクトがあり、sqlite-net パッケージの 2 つのファイル (SQLite.cs と SQLiteAsync.cs) があります。
ビルド構成は「Release」、プラットフォームは「ARM」です。
データベース クエリの例:
using MyApp.Model.Entities;
using System.Collections.Generic;
namespace MyApp.DAL
{
public class MyAppRepository
{
private string dbPath = @"Assets/words.db";
public List<Word> GetWordsByCatId(int id)
{
var sql = string.Format(@"
SELECT w.[id],
w.[word_en],
w.[word_ru]
FROM words w INNER JOIN word_links l ON w.[id]=l.[word]
WHERE l.category = {0};", id);
using (var conn = new SQLite.SQLiteConnection(dbPath))
{
var list = conn.Query<Word>(sql);
return list;
}
}
public List<Cat> GetCats2()
{
var sql = string.Format(@"
SELECT c.[id],
c.[name_en],
c.[name_ru],
COUNT(l.[id]) words
FROM categories c
LEFT JOIN word_links l ON c.[id]=l.[category]
GROUP BY c.[id]
HAVING words>1;");
using (var conn = new SQLite.SQLiteConnection(dbPath))
{
var list = conn.Query<Cat>(sql);
return list;
}
}
public List<Cat> GetCatsByWordId(int id)
{
var sql = string.Format(@"
SELECT c.[id],
c.[name_en],
c.[name_ru]
FROM categories c INNER JOIN word_links l ON c.[id]=l.[category]
WHERE l.word = {0};", id);
using (var conn = new SQLite.SQLiteConnection(dbPath))
{
var list = conn.Query<Cat>(sql);
return list;
}
}
}
}