Чтобы прокомментировать мой комментарий, проверьте эту ссылку и, более конкретно, ссылку на документацию Microsoft здесь , в которой указано:
Как правило, экземпляр DataContext рассчитан на одну «единицу работы», однако ваше приложение определяет этот термин. DataContext легок и не дорог в создании. Типичное приложение LINQ to SQL создает экземпляры DataContext в области действия метода или как член недолговечных классов, представляющих логический набор связанных операций с базой данных.
Microsoft проделала ужасную работу, объясняя это и откровенно объясняя, в первую очередь, использование Linq в многоуровневой среде. В моем конкретном случае у меня был один (статический) текст данных, реализованный с помощью шаблона Singleton, который, как я полагаю, и вы сделали. (Так как это самый логичный дизайн, ИМХО). Это, однако, крайне НЕ способ делать вещи. В моем случае исправление было довольно простым, меняя мой вызов GetDataContext (), чтобы каждый раз возвращать новый DataContext, вместо того, чтобы возвращать статический экземпляр. Это, однако, вы обнаружите, создает целый ряд новых проблем. Никто из них не станет непреодолимым, когда вы их поймете, но определенно боль.
Если у вас есть такая настройка (средства доступа Singleton для вашего DataContext), измените ее, чтобы посмотреть, решит ли она вашу проблему.
В любом случае, не используйте глобальный DataContext и не сохраняйте DataContext, если имеете дело с n-уровневой архитектурой.
Даже если это не решит вашу конкретную проблему, я настоятельно рекомендую вам перестроить свое решение, чтобы у DataContexts была единица времени жизни, если оно вас уже не укусило, то оно будет.