オブジェクトのリストからの SqlBulkCopy による一括挿入
オブジェクトのリストからデータベースへの実質的な挿入を実行するタスクに直面したとき単純なオブジェクトなので、この偉業を達成するために SqlBulkCopy を利用することについて疑問に思う人もいるかもしれません。このような操作に IDataReader インターフェイスのカスタム実装が必要かどうかという疑問が生じます。
この疑問は、FastMember の機能を調べることですぐに答えることができます。このライブラリを使用すると、中間の DataTable を必要とせずに一括挿入を実行できます。このアプローチは手順を簡素化するだけでなく、経験的テストで実証されているようにパフォーマンスも向上します。
実際には、FastMember を使用した実装は次のようになります。
using(var bcp = new SqlBulkCopy(connection)) using(var reader = ObjectReader.Create(data, "Id", "Name", "Description")) { bcp.DestinationTableName = "SomeTable"; bcp.WriteToServer(reader); }
ObjectReader が次のことを実行できることは注目に値します。汎用データ ソースと非汎用データ ソースの両方に対応します。さらに、メンバー名を事前に指定することは厳密な要件ではありません。ただし、手動による指定が省略される状況では、SqlBulkCopy の ColumnMappings 機能を利用すると有利であることがわかります。
以上がFastMember は、オブジェクトのリストから一括挿入するために SqlBulkCopy を使用して IDataReader の必要性を排除できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。