Используете ли вы SQL Server 2008 или более позднюю версию, и все ли вызовы хранимых процедур идентичны (кроме отдельных параметров)?
Если это так, вы можете заняться созданием версии хранимой процедуры, которая принимаетa Табличный параметр ( ADO ).Это позволит вам передавать все строки на сервер SQL в виде одной таблицы.
Если нет, то я предполагаю, что GetSqlUpdateCommand
в настоящее время создает SqlCommand
с именем хранимой процедурыи добавление соответствующих параметров.Другой подход:
Изменить GetSqlUpdateCommand
, чтобы он мог принять существующий объект SqlCommand
.Затем он добавляет новый вызов exec StoredProcedure @Parm1,@Parm2,@Parm2
и добавляет эти параметры.Необходимо убедиться, что он использует новые имена для добавляемых параметров, чтобы он не конфликтовал с другими вызовами exec
.Вам также может понадобиться настроить эту функцию так, чтобы она могла определять, когда вы приближаетесь к пределу количества параметров, которые вы можете передать, в этот момент она должна выполнить эту команду, а затем создать новую.
Например, он создает текстовую команду, такую как:
exec MegaProcedure @Parm1,@Parm2,@Parm3
exec MegaProcedure @Parm4,@Parm5,@Parm6
exec MegaProcedure @Parm7,@Parm8,@Parm9
Наконец, я думаю, что вы не понимаете, что такое транзакции / делают - они магически не связывают несколько вызовов вместе, поэтому они выполняются с меньшими затратамивремя наверх / туда и обратно.Они являются просто и просто механизмом, с помощью которого можно откатить работу, поэтому здесь они не помогут.
(И, фактически, каждый оператор в SQL в любом случае выполняется внутри транзакции - это просто так,по умолчанию эта транзакция открывается автоматически при запуске оператора и фиксируется при успешном завершении оператора)