0

我有一个使用 LinqToDatasets 更新/插入 SQL Server CE 3.5 文件的移动应用程序。

我的代码如下所示:

// 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,但我看不出如何使它与更新和插入一起工作。)

4

1 回答 1

1

您应该始终使用 SqlCeResultSet 在移动设备上进行数据访问,以获得最大的性能和内存使用率。您必须确定要插入的数据,然后使用类似 SqlCeBulkCopy 示例的代码,并通过使用 SqlCeResultSet 的 Seek 和 Update 方法来使用类似的代码。

于 2010-03-13T15:29:05.653 回答