エンティティへのLinqを使用してバルク/バッチ挿入を行う方法の例は見つかりません。あなたは一括挿入を行う方法を知っていますか?バルク挿入 - エンティティへのLinqの処理
答えて
モデルを混在させるだけの場合もあります。おそらく、リポジトリのこの部分にSqlBulkCopy
を使用してください(これはバルクコピーAPIに直接接続されるため)。残りの部分はEntity Frameworkを使用します。必要に応じて、直接ADO.NETのビット。最終的には目標を達成することです。
LINQ to Entitiesで一括挿入する方法の完全な例は、http://archive.msdn.microsoft.com/LinqEntityDataReaderを参照してください。 SqlBulkCopyを簡単に使用できるラッパーです。
@Marc Gravellは正しいですが、仕事を完了させるためにモデルをミックスする必要があることがあります。
EFエンティティ(またはプロパティ名が列名と一致する限り、あらゆる種類のオブジェクト)を一括して挿入するクラスを作成しました。
クラスは、バッチサイズのカスタマイズ、プレ後挿入イベント、キューインサート、および「Firehoseモード」(バッチサイズを考慮して10億個のオブジェクトを与える)をサポートしています。
データベースに大量のデータを挿入するためには、私は、リスト内のすべての挿入情報を収集し、DataTable
にこのリストを変換するために使用されます。私はSqlBulkCopy
経由でデータベースにそのリストを挿入します。私は生成されたリストを送って
私はデータベース
に挿入し、InsertData
が
public static void InsertData<T>(List<T> list,string TabelName)
{
DataTable dt = new DataTable("MyTable");
clsBulkOperation blk = new clsBulkOperation();
dt = ConvertToDataTable(list);
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
{
bulkcopy.BulkCopyTimeout = 660;
bulkcopy.DestinationTableName = TabelName;
bulkcopy.WriteToServer(dt);
}
}
public static DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}
である私の一括挿入操作
InsertData(LiMyList, "MyTable");
にそれを渡したいすべてのバルクデータの情報が含まれていLiMyList
SqlBulkCopyとカスタムデータウェアハウスを使用してパフォーマンスを最大限に引き出します。その結果、それは通常の挿入またはefbulkinsert延長使用のAddRange
サンプル使用するよりも20倍以上高速である:
context.BulkInsert(hugeAmountOfEntities);
これはすばらしいライブラリです。私は前からSqlBulkCopyのものを書きましたが、これははるかに簡単で迅速です – Andrew
- 1. エンティティへのLINQでのバルク削除
- 2. バルク挿入操作でエラーなしのレコードを処理する
- 3. Visual Studio C#Linqバルク挿入/更新
- 4. パーティションテーブルとテーブルレベルロックへのバルク挿入
- 5. ファイルフィールドのバルク挿入
- 6. kohanaバルク挿入
- 7. バルク挿入質問
- 8. Oracleのバルク挿入パフォーマンス
- 9. エンティティへのLinqとSQL_Latin1_General_CP1_CI_AI
- 10. 管理対象Beanへのエンティティ・マネージャの挿入
- 11. 削除データは、挿入バルク文の
- 12. データのバルク挿入にRavenDBを使用
- 13. JPA/Hibernateのバルク挿入が遅い
- 14. エンティティへのLinq - 子エンティティのフィルタリング方法
- 15. エンティティへのエンティティフレームワークのlinq
- 16. エンティティへのLinqの名前
- 17. エンティティへのLinqの削除
- 18. エンティティへのLinq '[A-G]%'クエリ
- 19. エンティティとカスタムプロパティへのLinq
- 20. エンティティへのEager-loading&LINQ
- 21. エンティティへのLinq - 参照EntityKey
- 22. エンティティとビジネスロジックへのLinq
- 23. LINQとロールバックの処理
- 24. Spring/Hibernateを使用したバルク挿入
- 25. SSIS-OleDb高速ロード対バルク挿入タスク
- 26. バルク挿入エラーメッセージSQL Server 2008 R2
- 27. LinqからSQLへのCRUD操作の処理
- 28. Linqからエンティティへの投影(IEnumerableへ)
- 29. LINQ2SQLからLINQへのエンティティへの移動
- 30. LinqのトランザクションをSQLに処理する
ああのNOE - ここでそれを見つけた死者リンク –
を... https://github.com /matthewschrager/Repository/blob/master/Repository.EntityFramework/EntityDataReader.cs –