Et voilà la session que j’attendais : SQL CE dans WP7
Depuis la sortie de WP7, la seule façon de faire du management de données est Linq to Objects sur des entités qu’on va ensuite sérialiser dans l’Isolated Storage (si on veut les garder sur le téléphone)
Mais si vous voulez plus de contrôle, plus de possibilités de structuration de schéma (liaison N-1 N-N etc ….), de possibilités de tri, ordonnancement etc … c’est compliqué et couteux
Merci donc à WP7 Mango d’apporter SQL SERVER CE dans WP7 !
Et il vous faudra vous y habituer, pour faire du SQL dans WP7, on va faire du … Linq To SQL (le vieux truc qui resort du placard
)
Bon, ça peut se comprendre, moins d’abstraction permettra de meilleurs performances (et oui, on a pas encore des WP7 avec un ICORE 7 dedans
)


En plus d’apporter donc SQL CE dans WP7, la team WP7 nous donne aussi accès à des api permettant de faire des requêtes sur les contacts ou encore les évènements du calendrier
Linq To SQL and Code First baby !
et oui, SQL CE dans WP7 est basé entièrement sur du LinqToSql et une création à base de Code First (décoration d’entités qui va ensuite générer la base de données relationnelle)
Grosso modo, on va (re)créer le DataContext qui va se mapper sur nos données SQL CE. On va refaire ce que fait le designer VS en gros ![]()
Je sens bien les bon templates T4 qui vont sortir bientot pour générer les classes WP7 pour une base de données SDF ![]()
Requêter des données SQL CE pour WP7
Première démo : Faire du linq to Sql pour accéder aux données stockées dans SQL CE
On retrouve ce qu’on connait déjà en LinqToSql :
- Une requête Linq
- Un provider qui va traduire l’instruction en SQL
- ADO.NET qui va exécuter la requête
Créer un schéma SQL CE pour WP7
Comment Dire …. CODE FIRST !
Créer un schéma, c’est créer vos entités dans un objet héritant de DataContext et les décorer via des attributs *
On est dans un principe de base de données Objets, transformée en base de données relationnelle.
Je vous mets les screenshots de ce que j’ai pu prendre pendant la session :
On peut voir que tout les décorations par attributs nous rappelle LinqToSQL, jusqu’à la création du DataContext :



Création de la base de données : on donne une Data Source dans l’Isolated Storage et on appelle CreateDatabase

Cool; on a les Compiled Query

Update Delete Inserts
Bon ben c’est du Linq To SQL, donc on modifie, supprime nos objets et on appelle le SubmitChanges()


Schema Upgrades
Il existe un objet DatabaseSchemaUpdater qui permet, transactionnellement, de faire une mise à jour de votre schéma.

Ok, ça je demande à voir ce que ça va donner
J’ai quand meme un peu peur que ce soit un peu trop “léger” pour gérer les cas complexes de mise à jour!
Conclusion
Bon ben je suis enchanté par cette nouvelle, je suis moins fan du coté “Code First” même si j’estime que ici, cela prend plus de sens qu’ailleurs…
Sinon, pas mal de choses restent à éclaircir comme les perfs (Connection Pooling) l’intégration avec SQL SERVER 2008 + (Réplication ?) et surtout les perfs de l’engin sur mon WP7 ! ![]()












