1

ストアドプロシージャ、つまり基本的にINSERTストアドプロシージャを呼び出しています。テーブルAに挿入し、次にテーブルAのIDを使用してテーブルBに挿入します。

ここで、アプリケーションコードからこのストアドプロシージャをN回呼び出す必要があります。

これをバッチ処理する方法はありますか?現時点では、DBへの往復をN回行っているので、1回にしたいと思います。

私が考えることができる唯一のアプローチは、ユーザー定義のテーブルタイプを介して、アイテムのリスト全体をネットワーク経由で渡すことです。

ただし、このアプローチの問題は、挿入を実行するために各アイテムをループするためにsprocにCURSORが必要になることです(IDフィールドのため)。

DbCommand.ExecuteNonQuery()基本的に、 EF 4.2でバッチ処理できますか?

それとも、Dapperのようなものでそれを行うことができますか?

4

1 に答える 1

0

このように保持することができ、ストアドプロシージャでは、MERGEターゲットテーブルとテーブルパラメータの間で実行するだけです。あなたは常に新しいレコードを持っているので、はブランチMERGEにのみ入ります。INSERT

この場合、このように使用MERGEすると、カーソルなしでバッチ挿入を行う簡単な方法になります。

また、カーソルの使用を回避する別の方法はINSERT from SELECT、SPでステートメントを使用することです。

于 2012-06-27T05:29:39.877 に答える