2010-01-21 2 views
1

Я работаю над веб-формой ASP.Net, и мне интересно, как долго я должен поддерживать свой контекст данных. В настоящее время я создаю контекст для каждой загрузки страницы, и этот контекст используется в каждом доступе к базе данных для всей загрузки страницы. Должен ли я использовать контекст только в каждом методе, который ему нужен, и располагать в конце метода? Я понимаю, что я не могу получить доступ к объекту, извлеченному из контекста, как только я выхожу из блока использования этого контекста, но это не проблема с моим дизайном.Как долго я должен хранить LINQ DataContext? ASP.Net page

ответ

2

Я бы сказал, что вы сохраняете контекст столько, сколько вам нужно, и это уместно. Существует баланс между продолжительностью жизни контекста и количеством запросов.

Вы не хотите создавать контекст с каждым запросом в базу данных, аналогично, вы, вероятно, не хотите поддерживать контекст на весь срок службы приложения (где это возможно).

Я бы посмотрел на эффективные транзакции, которые выполняет код, и посмотрите, поддерживает ли контекст в каждом из них. Эта гранулярность также должна помочь обеспечить, чтобы ваш код был модульным и расширяемым (поскольку зависимости должны быть меньше).

1

Я сделал это так, как вы описали, а также другим способом, который связан и уничтожен на основе HTTP-запроса. Это позволяет одной странице использовать один DataContext от начала до конца.

В целом, я не видел большого удара по производительности, делая это так, как вы сейчас это делаете.

3

У Стива Сандерсона (автор Pro ASP.NET MVC Framework) есть интересный blog post по этому вопросу. Суть его в том, что DataContext должен храниться вокруг «единицы работы», которая в основном коррелирует с «запросом». Я думаю, вы могли бы уйти с более короткими сроками жизни, если бы вы не изменяли объект и не нуждались в том, чтобы сохранять (обновлять) любые изменения обратно в БД.

Вы также можете проверить 'When should I dispose of a data context?' здесь, на SO.

Смежные вопросы