Лично я использую что-то похожее на это:
public class MyClass : MyBaseClass
{
public void GetData()
{
using(DbDataContext db = new DbDataContext())
{
// DO STUFF
}
}
public void PerformLogicallyAtomicAction()
{
using(DbDataContext db = new DbDataContext())
{
// DO STUFF
}
}
}
Если нет необходимости держать контекст данных открытым дольше.
Обновление
Чтобы пояснить немного больше о причинах, по которым я это делаю:
1) Мне не нужен объект в памяти дольше, чем он мне нужен
Ниже приводится основная причина
2) Отслеживание изменений данных в некоторых случаях приводит к устареванию данных (см. 2-й комментарий к OP)
3) Создание нового объекта занимает 0 раз (эффективно)
4) Создавая его каждый раз, когда мне это нужно, я могу изменить определенные параметры LINQ (например, ObjectTrackingEnabled (который я часто отключаю)