Повторное использование объекта DbContext, созданного в Spring.Net, через контроллеры и действия - PullRequest
0 голосов
/ 22 января 2012

Что лучше?Или, может быть, это хорошая практика?Я использую Spring.net для создания экземпляра DbContext, а затем внедряю его в каждый контроллер для использования в действиях.Объект-одиночка.Иногда я получаю исключение, в котором говорится, что «экземпляр ObjectContext был удален ...». Я подозреваю, что это может быть причиной, однако это не повторяется, и пока мое приложение используется только мной во время разработки.

Теперь, было бы лучше создать DbContext в каждом классе контроллера и повторно использовать в его действиях;или, возможно, создать объект DbContext в каждом действии;или просто установите его в конфигурации Spring, чтобы он не был одноэлементным, поэтому он создается при каждом обращении к нему?

1 Ответ

1 голос
/ 22 января 2012

Лучше всего ввести ваш dbcontext, используя область запроса.Таким образом, контекст создается в начале запроса и удаляется в конце.Во время запроса у вас будет доступен контекст db, чтобы он мог обрабатывать загруженные объекты с отложенным доступом.

Когда вы регистрируетесь как одиночный, dbcontext используется совместно для всех запросов, что в большинстве случаев не выполняетсят то, что вы хотите.Например, может случиться так, что он содержит ссылку на все ваши загруженные объекты, потенциально загружая весь БД в память.

...