まず第一に、私は愚かなことを尋ねているかどうかわからないので、始める前に謝罪してください.
SqlCommand を非同期的に使用してエンティティのコレクションを DB に保存するメソッドがあり、非同期操作を表す Task を返しますが、これまでのところうまくいきます。基本的に、エンティティごとに SQL コマンドと一連のパラメーターを生成し、それらすべてを SqlCommand インスタンスに追加します (パラメーターには番号が付けられています)。
しかし、多くのエンティティを挿入しようとすると、パラメーター数が 2100 に達すると、SQL 操作が失敗します。これが制限であるためです。次に、エンティティ コレクションをバッチで分割し、それらを順番に実行してから、すべての子タスクが完了するまで実行されないタスクを返します。(たぶん最後)
各子タスクは、変更された行数を示す Int32 を取得し、最終的なタスクはそれらすべての合計を返す必要があります。したがって、すべてのタスクはタスクです。1 つが失敗した場合、すべてを「ロールバック」する必要があるため、接続オブジェクトとトランザクション オブジェクトを共有する必要があります。
また、Task および SqlCommand で I/O 完了ポートを正しく使用していること、および SQL Server での操作が行われている間、スレッドが待機/スピンしていないことを確認したいと思います。この「保存」操作はASP.NET MVC の非同期コントローラーから呼び出されます。
ここで正しいアプローチは何でしょうか?
よろしく。