У вас должен быть один DataContext на одну группу связанных таблиц. В большинстве приложений это означает один DataContext для всего. Если у вас есть несколько наборов таблиц, которые вам не нужно изменять вместе, вы можете рассмотреть несколько DataContexts. Если вам даже может потребоваться выполнить запрос через DataContexts, не разделяйте их.
DataContext - это не просто набор таблиц - он предназначен для реализации шаблона Data Gateway - вы можете заполнить его методами, которые возвращают нужные вам данные, поэтому вам не нужно жестко кодировать запросы в каждом уголок вашего приложения. Теперь, если бы у вас было несколько DataContexts, по одному на страницу, вам, скорее всего, пришлось бы встраивать свою общую функциональность (например, MyDataContext.GetActiveCustomers ()) в каждую из них. Это было бы ужасным дублированием.
Таким образом, ответ таков: обычно неправильно создавать много маленьких DataContexts. Это возможно только в том случае, если ваши данные полностью разделены (разные логические или физические базы данных) или если вы используете DataContext в качестве просто объекта Connection, а это не так.
Обратите внимание, однако, что DataContexts должны быть недолговечными - они являются реализацией шаблона единиц работы и, следовательно, их время жизни должно быть равно одной логической операции (например, загрузка набора продуктов или вставка нового заказа). DataContexts дешевы в создании и уничтожении, поэтому не тратьте время на их кэширование только потому, что.