2016-09-28 86 views
0

当社のヘルスケアアプリケーションは(AngularjS + MVC + WebAPI)3tierアーキテクチャです。インポート画面で列のマッピングを行うExcelシートをアップロードする。その後、Excelシートの各レコードごとにすべての検証を行います。その後、これらすべての50K行がWeb-APIレイヤーのエンティティとして使用されます。ここでは、1つのレコードを親テーブルに挿入して、主キーを取得します。 50kのエンティティをループしてコレクション内で更新します。次に、addRangeを使用してこれらの値をすべてデータベースに更新します。ここでは、アプリケーションで使用したコードを示します。Entity Framework v6.1での一括挿入

  db.tableA.Add(Entity1); 

      db.SaveChanges(); 

      (Primary Key) fileId = int.Parse(Entity1.Id.ToString()); 


//DataList having 50K Entities 
      foreach (tableB coll in DataList) 

      { 

       coll.fileID = fileId;      

      } 

      db.tableB.AddRange(DataList); 

      db.SaveChanges(); 

以下のリンクを参照してください。 Bulk insert in entity framework

Bulk insert in entity framework

How to use Bulk Insert in Entity Framework using Object Context?

しかし、私は最新のEFのバージョン(6.1)との互換性がありませんので、EntityFramework.BulkInsertを使用couldntの。 EFを使用して一括挿入を使用する他の実行可能なアプローチはありますか?また、我々は、Entity FrameworkでSqlBulkCopyを使用することができます `

+1

はい、EFを使用しているプロジェクトでSqlBulkCopyを使用できます。 –

+0

@ Lukasはい。EFバージョン6.1で一括挿入を使用する可能性はありますか? – SivaRajini

+0

@SivaRajiniなぜですか?一括挿入は*オブジェクト*とは何の関係もありません。一括挿入とは、レコードのストリームをできるだけ早くデータベースに送信することです。 ORMはレコードではなく、マッピングやクラスを扱います。仕事のために間違ったツールです。 –

答えて

1

をここで別のサードパーティのライブラリを使用して、代替ソリューションが(Entity Frameworkの6.1との互換性)である

免責事項:?私はプロジェクトの所有者だEntity Framework Extensions

このライブラリには、それはあなたのアプリケーションが可能性のあるすべての一括操作を行うようにすることによってのみ、一括挿入だけではありません必要なすべてのEntity Frameworkのバージョン6.x

と互換性があります。

  • BulkSaveChanges
  • BulkInsert
  • しかしながら、BulkUpdate
  • のbulkdelete
  • BulkMerge

// Easy to use 
context.BulkSaveChanges(); 

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

ライブラリサポート継承との関連付けのすべての種類、ライブラリは無料ではありません。

+0

これは無料のオープンソースですか? – SivaRajini

+0

ライブラリは残念ながら無料ではありません。これは、サポートを得て、すべてをサポートするライブラリを持つという欠点です。 –

関連する問題