Je me demandais ce qui est une solution de base de données viable pour le stockage local sur Windows Phone 7 en ce moment. En utilisant la recherche, je suis tombé sur ces 2 fils mais ils ont plus de quelques mois. Je me demandais s'il y avait de nouveaux développements dans les bases de données pour WP7. Et je n'ai trouvé aucun avis sur les bases de données mentionnées dans les liens ci-dessous.Qu'est-ce qu'une base de données locale viable pour Windows Phone 7 maintenant?
Mes exigences sont les suivantes:
- Il devrait être libre pour un usage commercial
- Sauvegarde/mise à jour d'un enregistrement ne devrait enregistrer l'enregistrement réel et non l'ensemble de la base de données (contrairement à WinPhone7 DB)
- Possibilité de requête rapide sur une table avec ~ 1000 enregistrements en utilisant LINQ.
- devrait fonctionner également dans le simulateur
EDIT:
juste essayé Sterling en utilisant une application de test simple: Il semble bon, mais j'ai 2 questions.
La création de 1000 enregistrements prend 30 secondes en utilisant
db.Save(myPerson)
. La personne est une classe simple avec 5 propriétés. Puis j'ai découvert qu'il y avait une méthodedb.SaveAsync<Person>(IList)
. C'est très bien car cela ne bloque plus le thread actuel.
MAIS ma question est: Est-ce que c'est enregistrer pour appelerdb.Flush()
immédiatement et faire une requête sur le IList en cours d'enregistrement? (car il faut jusqu'à 30 secondes pour enregistrer les enregistrements en mode synchrone). Ou dois-je attendre que BackgroundWorker ait fini de sauvegarder?Interrogez ces 1000 enregistrements avec LINQ et une clause where la première fois prend jusqu'à 14 secondes à charger dans la mémoire.
Y at-il un moyen d'accélérer cela?
Voici quelques résultats de référence: (tests unitaires ont été exécutés sur un 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)
Je vois qu'il ya deux voix près sur prémisse d'être subjective/argumentatif. Changer le libellé "qu'est-ce qui est le mieux" pour "ce qui est viable" devrait répondre à cela ... si Buju ne voit pas d'inconvénient à ce libellé pour sa question? –
ok thx, c'est bien avec moi – Buju
En passant, vous devriez télécharger la dernière version. Il y avait un problème avec le fournisseur de stockage isolé, il est beaucoup plus rapide maintenant. –