0

LinqToDatasetsを使用してSQLServerCE3.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秒以上かかるループが3つあります)。

このような更新/挿入を行うためのより高速またはより良い方法はありますか?

(私はこのCodeplexプロジェクトを見ましたが、更新と挿入の両方でそれを機能させる方法を見ることができませんでした。)

4

1 に答える 1

1

パフォーマンスとメモリ使用量を最大化するには、モバイルデバイスでのデータアクセスに常にSqlCeResultSetを使用する必要があります。挿入するデータを特定してから、SqlCeBulkCopyサンプルのようなコードを使用し、SqlCeResultSetのSeekメソッドとUpdateメソッドを使用して同様のコードを使用する必要があります。

于 2010-03-13T15:29:05.653 に答える