2016-09-28 4 views
0

Notre est une application de soins de santé suit (AngularjS + MVC + WebAPI) 3tier architecture. Im télécharger une feuille Excel n faire des mappages de colonnes dans un écran d'importation. Après cela, je fais toutes les validations pour chaque n chaque enregistrement dans la feuille Excel. Ensuite, toutes ces lignes 50K en tant qu'entités vers la couche Web-API. Voici im insérer un rec dans la table parent pour obtenir la clé primaire. Après l'avoir obtenu en passant par les entités 50k pour le mettre à jour dans la collection. Ensuite, j'utilise addRange pour mettre à jour toutes ces valeurs dans la base de données. Voici un morceau de code que nous avons utilisé dans l'application.En vrac Insert dans 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(); 

Référé ci-dessous. Bulk insert in entity framework

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

Bulk insert in entity framework

Mais je ne pouvais pas utiliser le EntityFramework.BulkInsert depuis son pas compatible avec la dernière version EF (6.1). Existe-t-il une autre approche viable pour utiliser l'insert en vrac en utilisant EF? Aussi pouvons-nous utiliser SqlBulkCopy dans Entity Framework `

+1

Oui, vous pouvez simplement utiliser SqlBulkCopy dans le même projet dans lequel vous utilisez EF. –

+0

@Lukas yes.Y a-t-il une possibilité d'utiliser un insert en vrac dans EF version 6.1? – SivaRajini

+0

@SivaRajini pourquoi? L'insertion en vrac n'a rien à voir avec les * objets *. Bulk Insert signifie envoyer un flux d'enregistrements à la base de données aussi vite que possible. Un ORM traite des mappages et des classes, pas des enregistrements. C'est le mauvais outil pour le travail –

Répondre

1

Voici une solution de rechange à l'aide d'une autre bibliothèque tiers (compatible avec Entity Framework 6,1)

Avertissement: Je suis le propriétaire du projet Entity Framework Extensions

Cette bibliothèque est compatible avec tous les 6.X

Entity Framework version Il ne se contente pas seulement en vrac en permettant de Insertion faire toutes les opérations en vrac votre application peut nécessite:

Cependant,
  • BulkSaveChanges
  • BulkInsert
  • de BulkUpdate
  • BulkDelete
  • BulkMerge

Exemple

// Easy to use 
context.BulkSaveChanges(); 

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

Le support de la bibliothèque tout genre d'héritage et d'association, la la bibliothèque n'est pas gratuite.

+0

Est-ce une source gratuite ou ouverte? – SivaRajini

+0

La bibliothèque n'est malheureusement pas gratuite. C'est l'inconvénient d'obtenir du support et d'avoir une bibliothèque qui supporte tout. –