DataContext
Любые члены экземпляра не гарантируют поточно-ориентированность.
Читать как: этот класс не является потокобезопасным, и экземпляры не должны совместно использоваться потоками, если не реализована блокировка.
Имейте в виду, что (по умолчанию) объекты данных отслеживают экземпляры записей, которые они загружают, - эти экземпляры также не должны быть разделены между потоками. Эти отслеживаемые экземпляры записей не обновляются для изменений в базе данных автоматически при запросе.
Имейте в виду, что вызов SubmitChanges для текста данных отправляет все измененные записи, которые он отслеживает, обратно в базу данных ... это может быть очень плохо, если несколько пользователей совместно используют текст данных даже с блокировкой.
Также из той же статьи:
Как правило, экземпляр DataContext рассчитан на одну «единицу работы», однако ваше приложение определяет этот термин. DataContext легок и не дорог в создании. Типичное приложение LINQ to SQL создает экземпляры DataContext в области действия метода или как член недолговечных классов, представляющих логический набор связанных операций с базой данных.
Если это будет сложно, я думаю, мы сбросим linq в sql и откатимся к подключенному подходу ..
Вы также не должны совместно использовать объект SqlConnection между потоками без реализации блокировки.