Мне было интересно, что является жизнеспособным решением для баз данных для локального хранилища на Windows Phone 7 прямо сейчас. Используя поиск, я наткнулся на эти 2 темы, но им уже несколько месяцев. Мне было интересно, если есть какие-то новые разработки в базах данных для WP7. И я не нашел ни одного отзыва о базах, упомянутых в ссылках ниже.
Мои требования:
- Это должно быть бесплатно для коммерческого использования
- Сохранение / обновление записи должно сохранять только реальную запись, а не всю базу данных (в отличие от БД WinPhone7)
- Возможность быстрого запроса к таблице с ~ 1000 записями с использованием LINQ.
- Также должен работать в симуляторе
EDIT:
Только что попробовал Sterling с помощью простого тестового приложения: выглядит хорошо, но у меня есть 2 проблемы.
Создание 1000 записей занимает 30 секунд с использованием db.Save(myPerson)
. Человек - простой класс с 5 свойствами.
Затем я обнаружил, что есть метод db.SaveAsync<Person>(IList)
. Это нормально, потому что он больше не блокирует текущий поток.
НО У меня вопрос: можно ли сразу вызвать db.Flush()
и выполнить запрос на сохраняющемся в настоящий момент IList? (потому что для сохранения записей в синхронном режиме требуется до 30 секунд). Или мне нужно подождать, пока BackgroundWorker закончит сохранение?
Запрос этих 1000 записей с помощью LINQ и предложения where в первый раз занимает до 14 секунд для загрузки в память.
Есть ли способ ускорить это?
Вот некоторые результаты тестов: (Юнит-тесты были выполнены на HTC Trophy)
-----------------------------
purging: 7,59 sec
creating 1000 records: 0,006 sec
saving 1000 records: 32,374 sec
flushing 1000 records: 0,07 sec
-----------------------------
//async
creating 1000 records: 0,04 sec
saving 1000 records: 0,004 sec
flushing 1000 records: 0 sec
-----------------------------
//get all keys
persons list count = 1000 (0,007)
-----------------------------
//get all persons with a where clause
persons list with query count = 26 (14,241)
-----------------------------
//update 1 property of 1 record + save
persons list with query count = 26 (0,003s)
db saved (0,072s)