2012-01-21 3 views
0

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

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

спасибо за ответы и любые объяснения

ответ

1

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

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