хранение сущности структуры сущностей в asp.net сессии, хорошая идея? - PullRequest
0 голосов
/ 13 августа 2010

давайте предположим, что у меня есть многократно используемый бизнес-уровень, который дополнительно использует уровень доступа к данным, который был реализован с использованием Entity Framework 4.0.Субъекты, возвращаемые / потребляемые бизнес-уровнем, являются самоконтролируемыми, что позволяет нам получить все полезные свойства, которые идут с сущностями такого типа.

Я хотел бы иметь возможность хранить сущности, с которыми я работаю, в почтовых отделениях (чтобы избежать повторных запросов каждый раз).По сути, давайте предположим, что у меня есть страничный GridView с 10 элементами в нем, и что-то вроде DetailsView для редактирования этих элементов.Каждый раз, когда вы выбираете новую строку в сетке, представление сведений обновляется информацией о выбранной строке.Я бы предпочел только запрашивать сущности по начальному запросу страницы и сохранять их в сеансе.Затем впоследствии у меня есть список сущностей, с которыми я могу работать, и в конечном итоге изменить и отправить обратно на бизнес-уровень со всеми изменениями.

Я действительно хочу использовать сессию вместо состояния просмотра, чтобы уменьшить полезную нагрузку на страницу(Самообследуемые объекты тяжелы), однако мне очень нравится состояние просмотра для этого из-за того факта, что когда пользователь уходит со страницы, остаточный эффект отсутствует.

Некоторые вещи, которые меня беспокоят:

  1. Когда пользователь уходит со страницы на другую страницу, сущности с предыдущей страницы все еще находятся в сеансе.Я всегда мог что-то сделать при загрузке страницы, чтобы выполнять домашнюю работу.Не уверен, что это хорошая практика.
  2. Я беспокоюсь о том, что люди открывают вкладки браузера и имеют два просмотра на одной странице, кажется, что это может создать проблему.
  3. Это даже хорошо?подход?Похоже, что я пытаюсь получить лучшее из всех миров, определенно было бы намного проще просто повторно запросить в каждом сообщении сущности и заплатить 50-100 мс за поездку базы данных.

Ваши мысли очень ценятся.

Ответы [ 2 ]

1 голос
/ 14 августа 2010

Если вы идете в базу данных, то вы в значительной степени теряете преимущества сущности Self Tracking, которая имеет возможность отслеживать изменения, когда объектный контекст отсутствует. Таким образом, сценарий asp.net без сохранения состояния является хорошим вариантом для STE. Я думаю, что вам нужно всего лишь сохранить один объект в состоянии просмотра, который вы редактируете и который не должен быть таким тяжелым. У вас есть возможность сеанса, но мне никогда не нравился сеанс по той же причине, о которой вы упомянули. Это вызывает много ошибок в будущем, когда что-то остается висеть.

1 голос
/ 13 августа 2010

Возьмите удар возврата к базе данных. Если ваш сайт имеет низкую посещаемость, чтобы позволить вам включить его в сеанс, вы подойдете для запроса.

В этом также есть свои преимущества: у вас может быть более простая проверка параллелизма, и вы также не столкнетесь с проблемами, о которых вы говорите выше, с «пересечением» сеанса, когда кто-то откроет две вкладки.

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