I'm wondering exactly what is a viable database solution for local storage on Home windows Phone 7 at this time. Using search I happened upon these 2 threads but they're on the couple of several weeks old. I'm wondering if you will find newer and more effective rise in databases for WP7. And That I did not found any reviews concerning the databases pointed out within the links below.

My needs are:

  • It ought to be free for commercial use
  • Saving/upgrading an archive should only save the particular record and never the whole database (unlike WinPhone7 DB)
  • In a position to fast query on the table with ~1000 records using LINQ.
  • Also needs to operate in simulator

EDIT:
Just attempted Sterling utilizing a simple test application: It appears good, however i have 2 issues.

  1. Creating 1000 records takes thirty seconds using db.Save(myPerson). Person is a straightforward class with 5 qualities.
    I Quickly discovered there's a db.SaveAsync<Person>(IList) method. This really is fine since it does not block the present thread any longer.
    BUT my real question is: Could it be save to call db.Flush() immediately and perform a query around the presently saving IList? (since it occupies to thirty seconds in order to save the records in synchronous mode). Or must i hold back until the BackgroundWorker has finished saving?

  2. Query these 1000 records with LINQ along with a where clause the very first time occupies to 14 sec to load into memory.
    It is possible to method to speed this up?

Here are a few benchmark results: (Unit tests was performed on the HTC Trophy)


-----------------------------

getting rid of: 7,59 sec

creating 1000 records: ,006 sec

saving 1000 records: 32,374 sec

eliminating 1000 records: ,07 sec

-----------------------------

//async

creating 1000 records: ,04 sec

saving 1000 records: ,004 sec

eliminating 1000 records:  sec

-----------------------------

//get all secrets

persons list count = 1000 (,007)

-----------------------------

//get all persons having a where clause

persons list with query count = 26 (14,241)

-----------------------------

//update 1 property of just one record + save

persons list with query count = 26 (,003s)

db saved (,072s)

You might like to have a look at Sterling - it will address much of your concerns and it is very flexible.

http://sterling.codeplex.com/

(Full disclosure: my project)

Perst is free of charge for non-commercial use.

try Siaqodb is commercial project so that as difference from Sterling, not serialize objects and all in memory for query.Siaqodb could be queried by LINQ provider which effectively can pull from database even only fields values without create any objects in memory, or load/construct only objects which was asked for.

You could also would like to try Ninja Database Professional. It appears enjoy it has more features than Sterling.

http://www.kellermansoftware.com/p-43-ninja-database-pro.aspx