Я начинаю проект MVC, пройдя учебник по MvcMusicStore. Я пытаюсь понять, как сгенерированный POCO контекст данных / сущностей предназначен для хранения.
В примерах контроллер генерирует копию контекста сущности, и все операции там выполняются:
MusicStoreEntities storeDB = new MusicStoreEntities();
//
// GET: /Store/
public ActionResult Index()
{
// Retrieve list of Genres from database
var genres = from genre in storeDB.Genres
select genre.Name;
[...]
Если я хочу разделить свое решение на слои, какова стандартная практика (или ключевые варианты) для сохранения контекста? Сгенерировать ли я его в контроллере и передать в хранилище, или возможно ли в хранилище сохранить копию общего пользования?
Я понимаю, что вышеизложенное необходимо для использования шаблона Единица работы.
Мои слои:
- Данные (файл edmx)
- Сущности (генерируется из POCO)
- Репозиторий
- Mvc web app
Мои другие вопросы:
- Каковы затраты на создание контекста?
- Поскольку нет .Close (), и он не реализует IDisposable, стоит ли за ним ObjectContext, генерирующий отдельные соединения, пул соединений, разделяющий один экземпляр?
- Можно ли заблокировать ObjectContext, если он слишком часто передается между слоями / операциями?
Заранее спасибо.