私は2つの方法を使用します(エンティティフレームワーク外)。前述のように、5000 を超える大量のレコードがある場合は、SqlBulkCopy を使用します。それより速いものはありません。データテーブルを使用するため、オブジェクトを操作するときは最適ではありません。
ビジネス オブジェクトで使用するもう 1 つのオプションは XML です。私たちのビジネス オブジェクトには、xml を生成する serialize メソッドがあります。次に、次のようなストアド プロシージャがあります。文字列を渡すだけよりもサブコストが高くなりますが、構文が正しいこと、列名が正しいことなどを確認するSQLサーバーが必要です。さらに、SQLサーバーは実行計画をキャッシュします。文字列を渡すと、変更を加えるときにタイプミスや問題が発生しやすくなります。
@xDoc XML
INSERT INTO dbo.Test(Id,Txt)
SELECT Data.Id,Data.Txt
FROM
(SELECT
X.Data.value('Id[1]', 'int') AS Id,
X.Data.value('Txt[1]', 'tinyint') AS Txt
FROM @xDoc.nodes('MyRootNode/MyRecord') AS X(Data)) AS Data;