2016-09-28 2 views
0

Наше приложение для здравоохранения следует (AngularjS + MVC + WebAPI) 3-уровневой архитектуре. Я загружаю лист Excel, делая сопоставления столбцов на экране импорта. После этого im делает все проверки для каждой n каждой записи на листе excel. После этого все эти 50K строк как объекты на уровень Web-API. Здесь im вставляет один rec в родительскую таблицу, чтобы получить первичный ключ. После того, как вы запустили его через объекты 50k, обновите его в коллекции. Затем im использует 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

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

Bulk insert in entity framework

Но я не мог использовать EntityFramework.BulkInsert, поскольку его не совместим с последней версией EF (6.1). Есть ли другой жизнеспособный подход к использованию массовой вставки с использованием EF? Также мы можем использовать SqlBulkCopy в Entity Framework `

+1

Да, вы можете просто использовать SqlBulkCopy в том же проекте, в котором вы используете EF. –

+0

@Lukas yes.Is есть возможность использования объемной вставки в версии EF 6.1? – SivaRajini

+0

@SivaRajini почему? Массовая вставка не имеет ничего общего с * объектами *. Массовая вставка означает отправку потока записей в базу данных как можно быстрее. ORM имеет дело с сопоставлениями и классами, а не с записями. Это неправильный инструмент для работы –

ответ

1

Вот альтернативное решение, используя другую библиотеку стороннего поставщика (Совместимость с Entity Framework 6,1)

Отказ от ответственности: Я владелец проекта Entity Framework Extensions

Эта библиотека совместима со всеми Entity Framework версии 6.X

Это делает больше, чем только Bulk Вставка, позволяя делать все насыпной работы приложение может требует:

  • BulkSaveChanges
  • BulkInsert
  • BulkUpdate
  • BulkDelete
  • BulkMerge

Пример

// Easy to use 
context.BulkSaveChanges(); 

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

Библиотека поддержки всех видов наследования и ассоциаций, однако, библиотека не является бесплатной.

+0

Является ли это бесплатным или открытым исходным кодом? – SivaRajini

+0

Библиотеки, к сожалению, не бесплатно. Это недостаток для получения поддержки и наличия библиотеки, которая поддерживает все. –

 Смежные вопросы

  • Нет связанных вопросов^_^