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