Как сделать массовую вставку с помощью MySQL (например, SqlBulkCopy) с Linq to Entities

Привет, мне нужен метод для вставки большого количества записей в таблицу базы данных MySQL.

Я использую Linq to Entities, и метод использования цикла foreach и вставки каждой записи слишком медленный.

e.g.

foreach(var item in items){
    context.Add(item);
    context.SubmitChanges();
}

Есть ли такой метод, как команда MySql: LOAD DATA INFILE, доступный в соединителе .net?


person Lovely Bananas    schedule 12.04.2012    source источник


Ответы (2)


Платформа Entity (и Linq-to-entities) не поддерживает массовые вставки. Массовые вставки всегда должны выполняться с помощью встроенных функций сервера базы данных. Чтобы использовать LOAD DATA INFILE из .NET Connector, проверьте MySqlBulkLoader класс.

person Ladislav Mrnka    schedule 12.04.2012
comment
Хорошо, спасибо за помощь. Позор, у MySql нет лучшего варианта. - person Lovely Bananas; 13.04.2012

Этот пост выглядит многообещающе. Я пробую это в своем собственном приложении. Кроме того, это не мешает вашему дизайнеру, поскольку это частичный класс.

http://www.codeproject.com/Tips/297582/Using-bulk-insert-with-your-linq-to-sql-datacontex

Кроме того, вот класс в MSDN, который делает то же самое:

http://archive.msdn.microsoft.com/LinqEntityDataReader

Я повторно реализовал функцию в этом сообщении SO:

массовая вставка с linq-to-sql

person Andrew Mao    schedule 14.08.2012