Ответ 1
TBH в большинстве случаев linq или SQL - это не совсем проблема. Ваша производительность будет связана с тем, сколько данных вы вставляете, количество данных, находящихся в настоящее время в вашей таблице, и индексы, которые вы поддерживаете.
Во-вторых, нужно ли выполнять кросс-проверку и/или проверку целостности в нескольких столбцах ваших данных. У меня были ситуации, когда добавление индекса и восстановление таблицы заняли время вставки с минут до миллисекунд, только из-за плохой фрагментации и отсутствия алгоритма.
Linq - эффективный способ генерации SQL для логики вставки и модификации. Однако вы всегда будете иметь шаблон:
- Получение данных из базы данных
- Изменить данные с помощью Linq
- Внести изменения в базу данных.
Если у вас есть какая-либо логика, которую вы можете использовать в своих вставках, вы можете использовать заданную логику для выполнения обновлений в SQL. Например. Обновление клиентов. Установите KeyCustomer = 1, где Sales > 1000000. SQL Server будет обрабатывать такую команду в 1000 раз быстрее, чем вы могли бы сделать с вашим ORM. Однако, как @gbn уже правильно указал, если у вас нет команды с сильными SQL-кодонами, обслуживание будет часто превзойти любое первичное усиление в краткосрочной перспективе.
Если вам нужно вставить значительное количество записей, вам следует действительно смотреть на пакетную загрузку и/или ETL через SSIS. Эти API-интерфейсы будут использовать более интеллектуальные алгоритмы и выполнять любые проверки ограничений пакетами, а не каждой вставкой, что даст вам отличную производительность. Но управление пакетом SSIS намного больше, чем нажатие кнопки в приложении. Это все проектные решения, которые вам необходимо учитывать при архивировании приложения.