2

データベース テーブルを外部システムのリスト (XML) と同期する必要があるシナリオがあります。

私は EF を使用していますが、パフォーマンスの点でこれを達成するための最良の方法はどれかわかりません。

私が見ているように、これを行うには2つの方法がありますが、どちらも効率的ではないようです。

  1. 毎回 Db を呼び出します - XML から各エントリを読み取ります - リストからエントリを取得して取得します - エントリが見つからない場合は、エントリを追加します - 見つかった場合は、タイムスタンプを更新します - ループの最後で、古いタイムスタンプを持つすべてのエントリを削除します。

  2. すべてのオブジェクトをロードしてメモリ内で作業する

    • すべての EF オブジェクトをリストに読み込みます。
    • すべての EF オブジェクトを削除する
    • XML の各項目に項目を追加
    • 変更をデータベースに保存します。

リストはそれほど長くなく、約 7 万行と推定されます。このテーブルは Web サービスからのデータのソースであるため、新しい行を挿入する前に db テーブルをクリアしたくありません。クエリを実行できる間はテーブルをロックしたくありません。

T-SQLでこれを行っていた場合、おそらく行を一時テーブルに挿入し、結合して欠落しているエントリや削除されたエントリを見つけますが、Entity Frameworkでこれを処理する最良の方法はわかりません.

提案/アイデアはありますか?

4

3 に答える 3

1

場合によります。変更があまりない場合 (数百未満など) は、EF を使用しても問題ありません。それ以外の場合は、DB に一括挿入し、データベース内の行をマージする必要があります。

于 2013-11-01T12:01:03.047 に答える