0

EF 6.0を使用しているMVC 5アプリケーションで、Entity Frameworkを使用して200ヒット以上の製品レコードをデータベースに挿入したいとします。 [1]レコードのリストをXMLに変換し、ストアドプロシージャに渡す方法があります。 [2] DbContext.Add()を使用すると、すべてのレコードに対して起動します(内部的に挿入スクリプトを作成します)。 [3]製品のリストを横断して各レコードをストアドプロシージャに渡すと、これも良くないと思います。Entity Frameworkから200ヒットを1回でデータベースに挿入する方法

これを行うにはどのような方法が最適ですか?

+1

BulkInsertを使用することができます。EFにはいくつかの拡張機能があります。これは私がGoogle Searchを使って見つけた最初のものです - [https://github.com/zzzprojects/EntityFramework-Extensions](https://github.com/zzzprojects/EntityFramework-Extensions) –

答えて

0

この質問How to pass a table-value parameterがうまくいくかどうかはわかりませんが、それはまさに私がSQL 2014データベースにデータをロードするために使用しているものです。とても素敵で、4年以上働いています。

0

免責事項:私はプロジェクトEntity Framework Extensions

の持ち主だ(このライブラリは無料ではありません)

このライブラリは、あなたがで倍数エンティティを保存できるようにすることで、あなたのコードをより効率的に行うことができます一度。すべての一括操作がサポートされています:

  • BulkSaveChanges
  • BulkInsert
  • BulkUpdate
  • のbulkdelete
  • BulkMerge
  • BulkSynchronize

例:

// Easy to use 
context.BulkSaveChanges(); 

// Easy to customize 
context.BulkSaveChanges(bulk => bulk.BatchSize = 100); 

// Perform Bulk Operations 
context.BulkDelete(customers); 
context.BulkInsert(customers); 
context.BulkUpdate(customers); 

// Customize Primary Key 
context.BulkMerge(customers, operation => { 
    operation.ColumnPrimaryKeyExpression = 
     customer => customer.Code; 
}); 
0

this NuGet packageEntityFramework.BulkInsertライブラリを使用するいくつかの生産的Webアプリケーションがあります。それはうまく動作しますが、もはや維持されていないので、より良い解決策は、更新されたバージョンEntityFramework.BulkInsert-ef6-extを使用することです。

使い方はとても簡単です:

context.BulkInsert(yourListOfModels); 

、それははるかに高速古典Enrity Frameworkの個々INSERTのその実行BULK INSERT SQLコマンドを生成します。

関連する問題