【问题标题】:Slow Update/insert into SQL Server CE using LinqToDatasets使用 LinqToDatasets 缓慢更新/插入 SQL Server CE
【发布时间】:2010-03-10 17:36:12
【问题描述】:

我有一个使用 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,但我看不出如何使它同时适用于更新和插入。)

【问题讨论】:

    标签: linq windows-mobile compact-framework sql-server-ce linq-to-dataset


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多