Возможна ли серийная или объемная вставка в Linq 2 Sql?

Мой сценарий немного странный, у меня есть список сущностей, скажем, у меня есть десять пунктов в списке, которые пойдут в три разные таблицы, связанные друг с другом. Я использую Linq 2 Sql, и мне нужно вставить его в один удар вместо нескольких итераций.

Это возможно. Я слышал, в BLtoolkit есть метод InsertBatch(), который выполняет массовую вставку. Ничего похожего в L2S.

2 ответа

Решение

Короче говоря: нет, это невозможно.

InsertAllOnSubmit в основном просто вызывает InsertOnSubmit каждый раз. Так что это не очень помогает.

Если вы профилируете сгенерированный SQL, вы увидите, что вы получите много отдельных операторов вставки, что приведет к большим накладным расходам. Независимо от использования InsertOnSumbit или InsertAllOnSumbit.

Если вы загляните в Google, вы увидите несколько попыток добавить поведение SqlBulkCopy в Linq-2-sql. Например: http://blogs.microsoft.co.il/blogs/aviwortzel/archive/2008/05/06/implementing-sqlbulkcopy-in-linq-to-sql.aspx

Тем не менее, я думаю, что вы могли бы лучше реализовать SqlBulkCopy для своих пакетных заданий.

Есть InsertAllOnSubmit, С Linq To SQL вы просто устанавливаете свойства, которые хотите изменить для обновления. Потом звоню SubmitChanges сделает все остальное за вас..

Другие вопросы по тегам