Я работаю над веб-формой ASP.Net, и мне интересно, как долго я должен поддерживать свой контекст данных. В настоящее время я создаю контекст для каждой загрузки страницы, и этот контекст используется в каждом доступе к базе данных для всей загрузки страницы. Должен ли я использовать контекст только в каждом методе, который ему нужен, и располагать в конце метода? Я понимаю, что я не могу получить доступ к объекту, извлеченному из контекста, как только я выхожу из блока использования этого контекста, но это не проблема с моим дизайном.Как долго я должен хранить LINQ DataContext? ASP.Net page
ответ
Я бы сказал, что вы сохраняете контекст столько, сколько вам нужно, и это уместно. Существует баланс между продолжительностью жизни контекста и количеством запросов.
Вы не хотите создавать контекст с каждым запросом в базу данных, аналогично, вы, вероятно, не хотите поддерживать контекст на весь срок службы приложения (где это возможно).
Я бы посмотрел на эффективные транзакции, которые выполняет код, и посмотрите, поддерживает ли контекст в каждом из них. Эта гранулярность также должна помочь обеспечить, чтобы ваш код был модульным и расширяемым (поскольку зависимости должны быть меньше).
Я сделал это так, как вы описали, а также другим способом, который связан и уничтожен на основе HTTP-запроса. Это позволяет одной странице использовать один DataContext от начала до конца.
В целом, я не видел большого удара по производительности, делая это так, как вы сейчас это делаете.
У Стива Сандерсона (автор Pro ASP.NET MVC Framework) есть интересный blog post по этому вопросу. Суть его в том, что DataContext должен храниться вокруг «единицы работы», которая в основном коррелирует с «запросом». Я думаю, вы могли бы уйти с более короткими сроками жизни, если бы вы не изменяли объект и не нуждались в том, чтобы сохранять (обновлять) любые изменения обратно в БД.
Вы также можете проверить 'When should I dispose of a data context?' здесь, на SO.
- 1. Как долго хранить DataContext LINQ-to-SQL?
- 2. Как долго должен жить DataContext?
- 3. ASP.NET Запросы ... что делать с Linq DataContext?
- 4. Должен ли я использовать один LINQ DataContext или многие?
- 5. LINQ DataContext
- 6. как я должен хранить объекты
- 7. Как долго я должен готовиться к SCJP?
- 8. Почему я должен вызывать функцию DataContext ExecuteMethodCall дважды
- 9. Как долго может существовать DataContext в EF и Linq2Sql?
- 10. Лучшая практика Linq DataContext
- 11. LINQ Datacontext Disposal Issues
- 12. Как долго я могу хранить данные в cPickle?
- 13. Как управлять большим Linq DataContext?
- 14. Создать Linq DataContext
- 15. LINQ DataContext вызывает неприятности
- 16. DataContext - LINQ to SQL
- 17. Общий с Linq DataContext
- 18. DataContext SubmitChanges в LINQ
- 19. Как долго должен работать Темаклиент?
- 20. Где я должен хранить информацию о версии моего приложения ASP.NET?
- 21. Как bit64 хранить долго долго Int в двойном
- 22. Как я могу хранить экземпляр Heroku Node.js неограниченно долго?
- 23. Отменить обновление в datacontext = LInq
- 24. Хранить долго переменной в EEPROM
- 25. Как долго должен регистрироваться разработчик Google Play?
- 26. Как долго длится олицетворение ASP.NET?
- 27. LINQ к SQL, DataContext вопрос
- 28. Что я должен использовать с ASP.Net MVC, NHibernate, LINQ, EF?
- 29. Как долго нужно хранить файлы сеансов magento?
- 30. Как долго будет хранить временные файлы django?