0

我有一個使用LinqToDatasets更新/插入SQL Server CE 3.5文件的移動應用程序。使用LinqToDatasets緩慢更新/插入SQL Server CE

我的代碼看起來是這樣的:

// 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); 
    } 
} 

此代碼是用來保持手持數據庫同步與服務器數據庫。問題是如果它是一個完整的更新(例如第一次)有很多更新(約125)。這使得該代碼(多回路喜歡它需要很長的時間(我有三個這樣的環是採取每過30秒)。

是否有更快,更好的方式做這樣的更新/插入?

(我沒有看到這個Codeplex Project,但我看不出如何使它與兩個更新和插入工作。)

回答

1

你應該總是使用SqlCeResultSet上實現最高性能和內存使用移動設備的數據訪問。你必須識別要插入的數據,然後使用類似SqlCeBulkCopy示例的代碼,並使用SqlCeResultSet的Seek和Update方法使用類似的代碼。