L'exécution d'Insertion OU de mise à Jour (upsert) sur sql server compact edition

J'ai le c# projet qui est à l'aide de sql server compact edition et entity framework pour l'accès aux données. J'ai le besoin d'insérer ou de mettre à jour une grande quantité de lignes, 5000+ ou plus à la db, donc si la clé existe mise à jour de l'enregistrement en cas de ne pas l'insérer. Je ne peux pas trouver un moyen de le faire avec compact edition et EF avec des performances horribles, c'est à dire de prendre 2 minutes de plus sur un core i7 ordinateur. J'ai essayé de chercher le dossier pour voir s'il existe ensuite d'insérer si pas ou mettre à jour si elle le fait, la recherche est le tueur sur que. J'ai essayé de compiler la requête de recherche et qui ne lui a donné qu'une petite amélioration. Une autre chose que j'ai essayé est de l'insertion de l'enregistrement dans un try catch et en cas d'échec de mise à jour, mais qui m'oblige à savechanges sur chaque dossier pour obtenir l'exception plutôt que à la fin qui est une performance killer. Évidemment, je ne peux pas utiliser des procédures stockées, car il est compact edition. Aussi j'ai regardé seulement l'exécution de t-sql directement en quelque sorte sur la db, mais l'absence de traiter les déclarations compact semble écarter cette possibilité.
J'ai cherché dans le monde entier et d'idées. Je voulais vraiment utiliser compact si je peux m'exprimer plus pour le déploiement des avantages et la capacité d'empêcher l'utilisateur de creuser autour de la db. Tout suggesitons serait appréciée.

Grâce

  • Merci pour les suggestions. Je vais passer un peu de temps demain des tests de performance de ces idées. J'ai essayé plusieurs façons aujourd'hui avec sql express et rapide comme l'éclair, sans même l'aide de procédures stockées. À l'aide de ses procédures stockées et de la nouvelle instruction merge est presque instantanée.
InformationsquelleAutor RBear | 2009-04-08