Огромное количество записей необходимо вставить в базу данных с помощью Entity Framework - PullRequest
2 голосов
/ 19 июня 2019

У меня есть приложение, которое использует веб-сервис для получения данных на регулярной основе и нуждается в вставке записей в базу данных Sql Server.Необходимо проверить таблицу, существует ли уникальный ключ или нет, если он существует, запись должна быть обновлена, а не запись должна быть вставлена.

Мне нужно решение, подобное слиянию в базе данных Oracle, чтобыне думайте о дублирующих записях и что-то вроде массовой вставки в EF для одновременной вставки всех данных.

Я использовал AddRange и SaveChanges, но он использует несколько вставок и обновлений в БД, что занимает много времени.

Ответы [ 2 ]

2 голосов
/ 19 июня 2019

есть фреймворк, который добавляет для этого некоторые методы расширения в EF.имя ZZZ Framework https://zzzprojects.com/.

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

context.BulkSaveChanges();

context.BulkSaveChanges(options => options.BatchSize = 100)

. Он также поддерживает операцию слияния, аналогично тому, что доступно в Oracle.

var bulk = new BulkOperation(connection);
bulk.BulkInsert(dt);
bulk.BulkUpdate(dt);
bulk.BulkDelete(dt);
bulk.BulkMerge(dt);
2 голосов
/ 19 июня 2019

Существуют бесплатные сторонние пакеты NuGet, которые делают массовые вставки для вас, такие как https://www.nuget.org/packages/RudeySH.EFUtilities. Но это не совсем то, что вы просили.

А еще есть популярный коммерческий пакет на https://entityframework -extensions.net / .Добавлена ​​поддержка массового слияния.https://entityframework -extensions.net / насыпной-слияние .Очевидно, что использование зависит от вашего бюджета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...