Рекомендации по источникам данных Linq to SQL

При использовании linq to SQL в моем проекте я в настоящее время создаю контекст данных как можно позже при выполнении кода и удаляю его как можно скорее. Это приводит к тому, что контекст данных много раз открывается и закрывается на странице.

Другой вариант - открыть класс данных при загрузке страницы и удалить его при выгрузке страницы, чтобы соединение открывалось и закрывалось только один раз.

Есть ли существенная разница в оптимизации между двумя методами или один из них представляет собой наилучшую практику?

Моя первоначальная мысль заключалась в том, что я хотел, чтобы соединение открывалось как можно меньше времени, но, учитывая, насколько быстро загружается страница, я трачу больше времени на открытие и закрытие этих соединений, чем того стоит потраченный ресурс на то, чтобы держать его открытым?


person William    schedule 14.10.2009    source источник


Ответы (2)


Одна вещь, которую следует учитывать: время жизни DataContext не влияет на то, как долго соединение SQL Server остается открытым. Оператор SQL, сгенерированный вашим Linq To Sql, выполняется только тогда, когда вы оцениваете свой запрос.

Поэтому, когда вы вызываете (например), .ToList() или .DataBind(), выполняется инструкция SQL. В это время соединение открывается и закрывается.

person p.campbell    schedule 14.10.2009
comment
Означает ли это, что оба метода фактически одинаковы? Есть ли причина не создавать его при загрузке страницы и не удалять его при выгрузке страницы? - person William; 14.10.2009

За кулисами диспетчер LinQ to SQL использует пул соединений IIRC. Поэтому, если вы каким-то образом явно не убьете соединение, это не должно вас беспокоить.

person Tigraine    schedule 14.10.2009