Должен ли я делиться контекстом Entity-Framework или создавать новый контекст для каждой операции?
Я не настолько разбираюсь в лучшей практике относительно использования и повторного использования сущности-рамки Context
.
Мой вопрос: должен ли я попытаться создать один контекст и повторно использовать его много раз для разных запросов или я должен создать новый контекст для каждого запроса?
Например, если у меня есть форма с 10 диаграммами, все с запрошенными данными из тех же таблиц, должны ли 10 запросов быть из одного контекста или из 10 разных контекстов?
С точки зрения инкапсуляции кода я бы предпочел создать 10 новых контекстов, это хорошая идея и является ли она масштабируемой?
Ответы
Ответ 1
Все зависит от вашего приложения.
Ключевым соображением является то, что ObjectContext не является потокобезопасным, поэтому для веб-приложения ObjectContext для каждого запроса является способом перехода.
Для приложения Win Forms вы можете посмотреть, как долговечные объекты ObjectContext. Тем не менее, если вы предпочитаете более подробно обходить вещи, я бы попробовал это сначала, а не преждевременно оптимизировать его.
Подробнее о блоге Дэнни Симмонса здесь.
Ответ 2
ИМХО - я мог ошибаться, но так я это делаю...
Если вы говорите о модели, используйте контекст. Поскольку вам нужен только один модель - контекст, в который нужно запросить - то есть это модель базы данных.
Если вы говорите об ObjectContext - то по одному для каждого запроса (Linq).
Возьмите alook в этом Рекомендации по производительности для платформы Entity