4

大量のデータが一度に SQL データベースに挿入されるアプリケーションに取り組んでいます。私は LINQ to SQL を使用しており、挿入操作として次のようなものがあります。

foreach (オブジェクト内の var obj) { context.InsertOnSubmit(obj); } context.SubmitChanges();

問題は次のとおりです。例外 (DuplicateKeyException など) が発生した場合、どのオブジェクトが問題を引き起こしたのかわかりません。私が得ている唯一の情報は、オブジェクトの少なくとも 1 つに、データベース内の他のキーと同一のキー値が含まれているということです。

競合の原因となったオブジェクトに関する詳細情報を抽出することは可能ですか?

もちろん、InsertOnSubmit のたびに SubmitChanges を呼び出すこともできますが、挿入するデータの量を考えると、これは非常に遅くなります。

誰でも私に何かヒントはありますか?ありがとう!

4

2 に答える 2

1

友よ、私は賢明なアレックになろうとしているわけではなく、おそらく私はとにかく成功していますが、私の主な提案は、データの読み込みに使用するためにlinqを放棄することです. SSIS は、ETL 作業用のシンプルで効率的で保守が容易なコードを生成します。理由は、まさにそれを行うように設計されているからです。

次に、スローされる例外の種類を指定せず、提示されたときにその例外に null 以外の内部例外が含まれているかどうかも指定しません。それは私が最初に見る場所です。

幸運を。

于 2010-06-26T22:25:02.110 に答える
0

一括挿入のためにLinq to sqlを使用しています。遅いです。そのために設計されたわけではありませんが、私のシナリオにはぴったりです。

エラーを追跡するために ctx.Log を使用しています。http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writersに良い例があります

また、ctx.Log を使用してプログレス バーを取得しています。詳細については、私のブログ投稿 http://epandzo.wordpress.com/2011/01/02/linq-to-sql-ctx-submitchanges-progress/を参照してください。

およびstackoverflowの質問 LINQ to SQL SubmitChangess()の進行状況

于 2011-01-02T17:12:38.053 に答える