SqlBulkCopy を使用したリストからのデータの挿入
汎用リストから SqlBulkCopy を使用して一括挿入を実行するタスクに直面した場合、これは自然なことです。カスタム IDataReader の実装を検討してください。ただし、FastMember ライブラリを使用した、より効率的で便利なソリューションがあります。
FastMember を使用したソリューション
FastMember は、リストの変換プロセスを簡素化する ObjectReader と呼ばれる強力なクラスを提供します。オブジェクトをデータリーダーに取り込みます。使用方法は次のとおりです。
using(var bcp = new SqlBulkCopy(connection)) using(var reader = ObjectReader.Create(data, "Id", "Name", "Description")) { bcp.DestinationTableName = "SomeTable"; bcp.WriteToServer(reader); }
この例では、データはプロパティ「Id」、「Name」、および「Description」を含むオブジェクトのリストです。
ObjectReader は次のことができます。非汎用データ ソースでも機能するため、事前にメンバー名を指定する必要はありません。ただし、ObjectReader でそれらを指定しない場合は、SqlBulkCopy の ColumnMappings アスペクトを使用して、オブジェクト プロパティと宛先列の間のマッピングを定義することもできます。
以上がSqlBulkCopy を使用してリストから SQL Server にデータを効率的に一括挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。