Наше приложение для здравоохранения следует (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 `
Да, вы можете просто использовать SqlBulkCopy в том же проекте, в котором вы используете EF. –
@Lukas yes.Is есть возможность использования объемной вставки в версии EF 6.1? – SivaRajini
@SivaRajini почему? Массовая вставка не имеет ничего общего с * объектами *. Массовая вставка означает отправку потока записей в базу данных как можно быстрее. ORM имеет дело с сопоставлениями и классами, а не с записями. Это неправильный инструмент для работы –