0

J'ai une application mobile qui utilise LinqToDatasets pour mettre à jour/insérer dans un fichier SQL Server CE 3.5.Mise à jour lente/insertion dans SQL Server CE à l'aide de LinqToDatasets

Mon code ressemble à ceci:

// All the MyClass Updates 
MyTableAdapter myTableAdapter = new MyTableAdapter(); 

foreach (MyClassToInsert myClass in updates.MyClassChanges) 
{ 
    // Update the row if it is already there 
    int result = myTableAdapter.Update(myClass.FirstColumn, 
             myClass.SecondColumn, 
             myClass.FirstColumn); 
    // If the row was not there then insert it. 
    if (result == 0) 
    { 
     myTableAdapter.Insert(myClass.FirstColumn, myClass.SecondColumn); 
    } 
} 

Ce code est utilisé pour garder la main base de données tenue en synchronisation avec la base de données du serveur. Le problème est que s'il s'agit d'une mise à jour complète (la première fois par exemple) il y a beaucoup de mises à jour (environ 125). Cela rend ce code (et plusieurs boucles comme il prendre très longtemps (j'ai trois de ces boucles qui prennent plus de 30 secondes chacun).

Y at-il un moyen plus rapide ou meilleure façon de faire des mises à jour/inserts comme celui-ci?

(j'ai vu ce Codeplex Project, mais je ne pouvais pas voir comment faire fonctionner avec les mises à jour et inserts).

Répondre

1

Vous devriez toujours utiliser SqlCeResultSet pour l'accès aux données sur les appareils mobiles pour une performance maximale et utilisation de la mémoire. Vous devez identifiez les données à insérer, puis utilisez du code comme l'exemple SqlCeBulkCopy et utilisez un code similaire en utilisant les méthodes Seek et Update de SqlCeResultSet

Questions connexes