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