Чтобы полностью использовать LinqToSql в приложении ASP.net 3.5, необходимо создать DataContext classes (что обычно делается с помощью конструктора в VS 2008). С точки зрения пользовательского интерфейса DataContext представляет собой структуру разделов вашей базы данных, которую вы хотите открыть через LinqToSql, и является неотъемлемой частью настройки функций ORM LinqToSql.
Мой вопрос: я настраиваю проект, который использует большую базу данных, где все таблицы каким-то образом связаны через внешние ключи. Моей первой целью является создание одного огромного класса DataContext, который моделирует всю базу данных. Таким образом, я мог бы теоретически (хотя я не знаю, будет ли это необходимо на практике) использовать соединения внешнего ключа, которые генерируются через LinqToSql, чтобы легко перемещаться между связанными объектами в моем коде, вставлять связанные объекты и т.д.
Однако, подумав, я теперь думаю, что имеет смысл создавать несколько классов DataContext, каждый из которых относится к определенному пространству имен или логически взаимосвязаному разделу в моей базе данных. Моя основная проблема заключается в том, что создание и уничтожение одного огромного класса DataContext все время для отдельных операций, относящихся к конкретным областям базы данных, будет налагать ненужное наложение на ресурсы приложений. Кроме того, легче создавать и управлять меньшими файлами DataContext, чем один большой. То, что я проиграю, заключается в том, что будут какие-то отдаленные разделы базы данных, которые не были бы судоходными через LinqToSql (даже если цепочка отношений соединяет их в фактической базе данных). Кроме того, были бы некоторые классы таблиц, которые существовали бы в более чем одном DataContext.
Любые мысли или опыт относительно того, являются ли несколько DataContexts (соответствующие пространству имен БД) вместо (или в дополнение) одного очень большого класса DataContext (соответствующего всей БД)?