Я надеюсь, что причина, по которой вы задаете вопрос, заключается в том, что вы знаете, что технически это поведение невозможно, поскольку L2S генерирует операторы вставки так же, как вы вручную или в хранимой процедуре:)
Вы уверены, что он не запускает триггер или запускает триггер только один раз для всех вставок? Я не смог смоделировать сценарий (забыл установить ssms на моем домашнем компьютере - хотел бы использовать его в основном для игр;)), но этот вопрос: Триггер SQL Server, который работает - срабатывает только один раз ( прочитайте ответ Пабло Санта-Круза) показывает, что триггер будет срабатывать только один раз для каждого оператора вставки. Поэтому, если есть один оператор вставки, который массово вставляет из всего набора строк, триггер срабатывает только один раз, а идентификатор inserted
в триггере содержит все эти строки.
Если L2S делает что-то умное и спулирует вставки из временной таблицы или табличной переменной, то вы можете увидеть только одно выполнение триггера.
Присоедините Console.Out
к свойству DataContext Log
и изучите SQL, который генерируется при отправке, - затем вы можете скопировать его и выполнить вручную в SSMS для проверки поведения.
Кроме того, я провожу большую часть своей жизни, избегая триггеров - так что я не самый большой авторитет в их поведении - я склонен думать, что они ничего не делают, кроме как превращают мою жизнь в кровавое страдание (зная, что они служат очень полезная цель)!
Так что, извините, нет точного ответа - но, надеюсь, несколько указателей там.