Отложенная фиксация сущностей Entity Framework - PullRequest
0 голосов
/ 05 июня 2009

Я создаю сайт Asp.net MVC с использованием Entity Framework и задаюсь вопросом, как сохранить новые и обновленные сущности в памяти для нескольких запросов без фиксации в базе данных. Скажем, например, пользователь переходит к представлению для редактирования сущности, и в этом представлении он может добавлять дочерние объекты к сущности. Я не хотел бы вносить изменения в базу данных, пока пользователь не нажмет кнопку «Сохранить» на странице.
Я понял, что я не должен сохранять ObjectContext, что я понимаю. По сути, я хочу взять сущность, сохранить ее в состоянии сеанса или где-то эквивалентное, внести туда изменения, а затем отправить их в базу данных, когда пользователь закончит работу на странице. Есть мысли о том, как это сделать?

Ответы [ 2 ]

1 голос
/ 05 июня 2009

Коллекция ViewData является временной «блокнотной записью» для сохранения объектов в запросах. Он работает так же, как объект Session, но более короткий срок жизни.

В проекте MVC по умолчанию вы можете увидеть пример этого в контроллере Home, где он использует ViewData ["Message"] для отображения сообщения в представлении Index.

0 голосов
/ 25 января 2010

Я наткнулся на этот вопрос в поисках аналогичной проблемы. Просто в случае, если кто-то еще находится в той же ситуации, принятый ответ Джоша Э. ошибочен - ViewData НЕ сохраняется в нескольких запросах, он предназначен только для передачи данных в View, что происходит внутри одного и того же запроса. TempData IS сохраняется в запросах, но значения, хранящиеся в нем, очищаются после однократного чтения.

Я недостаточно знаком с Entity Framework, чтобы знать, поддерживается ли он, но вы можете хранить любой (сериализуемый?) Объект в сеансе. Однако время жизни этих объектов зависит от времени жизни сеанса, если вы не удалите их вручную. Кроме того, это может занять значительное количество памяти. Я полагаю, что наиболее желательный метод - использовать постоянную среду, которая может управлять этим для вас. Я не знаю, может ли Entity Framework сделать это. Для тех из нас, кто застрял в ADO, мне еще предстоит найти хорошее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...