Один DataContext на запрос - это единственный способ, не единственный, но обычно хороший.
Используя один DataContext, вы можете сохранить все отправленные данные до конца запроса и сразу отправить все изменения. SubmitChanges автоматически инкапсулирует все изменения в транзакции.
Если вы используете несколько контекстов, вам нужно вместо этого инкапсулировать ваш запрос в транзакцию, чтобы сделать возможным откат изменений, если запрос не выполняется на полпути. Вы получаете немного больше накладных расходов, используя несколько контекстов, но это, как правило, несущественно.
Я работал как с одним, так и с несколькими объектами данных в разных приложениях, и оба работают хорошо, если для перехода к одному DataContext требуется много перезаписи, вы можете сохранить несколько контекстов, если у вас нет других веских причин для перезаписи .