Когда вы вызываете SubmitChanges, LINQ to SQL проверяет набор известных объектов, чтобы определить, были ли к ним присоединены новые экземпляры. Если они есть, эти новые экземпляры добавляются в набор отслеживаемых объектов.
Непосредственно перед передачей каких-либо фактических изменений LINQ to SQL запускает транзакцию для инкапсуляции последовательности отдельных команд.
Изменения в объектах переводятся одна за другой в команды SQL и отправляются на сервер.
В этот момент любые ошибки, обнаруженные базой данных, приводят к остановке процесса отправки и возникновению исключения. Все изменения в базе данных откатываются, как если бы никогда не происходило отправки .
Для получения дополнительной информации об этом представлении Статья MSDN .
Надеюсь, это поможет!