私の Windows ストア アプリでは、分離ストレージに SQLite データベースがあります。
私はsqlite-netライブラリを使用しています。
データをデータベースに保存するには、次を使用します。
public static async Task Save<T>(List<T> items)
{
var serverFolder = await ApplicationData.Current.LocalFolder.GetFolderAsync("FolgerName");
var storageFile = await serverFolder.GetFileAsync("DataBaseName.sqlite");
using (var db = new SQLiteConnection(storageFile.Path))
{
Debug.WriteLine("Save to DataBase " + (typeof(T)) + " started " + DateTime.Now.Minute + ":" + DateTime.Now.Second + ":" + DateTime.Now.Millisecond);
try
{
foreach (var item in items)
{
db.InsertOrReplace(item);
}
Debug.WriteLine("Save to DataBase " + (typeof(T)) + " success " + DateTime.Now.Minute + ":" + DateTime.Now.Second + ":" + DateTime.Now.Millisecond);
}
catch
(SQLiteException ex)
{
Debug.WriteLine("Save to DataBase " + (typeof(T)) + " error. Result: " + ex.Result + " Message: " + ex.Message);
}
}
}
パフォーマンスについて質問があり
ます。それぞれに 60 フィールドを持つ 1226 個のオブジェクトが 4 分半でデータベースに保存されました。
それは正常ですか?
どうすれば速くなりますか?
アップデート
私が使用する場合:
public static async Task Save<T>(List<T> items, Server server) where T : IHasId
{
var serverFolder = await ApplicationData.Current.LocalFolder.GetFolderAsync(server.FolgerName);
var storageFile = await serverFolder.GetFileAsync("kaliti.sqlite");
using (var db = new SQLiteConnection(storageFile.Path))
{
Debug.WriteLine("Save to DataBase " + (typeof(T)) + " started" + String.Format("{0:d/M/yyyy HH:mm:ss}", DateTime.Now));
try
{
var table = db.Table<T>();
var idList = new List<int>();
foreach (var i in table)
{
idList.Add(i.Id);
}
foreach (var item in items)
{
if (idList.Contains(item.Id))
{
db.Delete<T>(item.Id);
}
db.Insert(item);
}
Debug.WriteLine("Save to DataBase " + (typeof(T)) + " success" + String.Format("{0:d/M/yyyy HH:mm:ss}", DateTime.Now));
}
catch
(SQLiteException ex)
{
Debug.WriteLine("Save to DataBase " + (typeof(T)) + " error. Result: " + ex.Result + " Message: " + ex.Message);
}
}
}
そしてDataBaseは空です私は同じものを持っています。