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