У меня есть система, которая позволяет пользователям планировать конференц-связь и приглашать людей, используя их адрес электронной почты. Это реализовано в ASP.net MVC 3, используя EntityFramework в шаблоне репозитория. Когда пользователь вошел в систему, я хочу отобразить список исходящих вызовов, которые они либо создали, либо были приглашены. В списке должны быть указаны данные о вызове, а также имя/адрес электронной почты организатора, в котором сохранено поле «Имя пользователя» и «Профиль» создателя вызовов.Оптимизация использования данных профиля
Когда организатор является зарегистрированным пользователем, это нормально, однако, когда вызов был организован другим пользователем, я извлекаю пользователя с помощью UserId (поскольку он хранится в вызове), а затем извлекает их профиль для отображения их имя и ссылку на их электронную почту - если существует большое количество запланированных вызовов, или если я добавляю список исторических вызовов, это может привести к значительному количеству запросов к базе данных, которые вообще не будут оптимальными.
2 подхода я Рассматриваемый:
- магазин имя и адрес электронной почты организатора, когда создаются вызов. Существует вероятность, что эти детали будут обновлены организатором впоследствии, однако это может привести к отображению неправильной/устаревшей контактной информации.
- Загрузить все пользователи детали в хэш-таблицу и запрос к этому каждый раз - система в настоящее время в его первые дни и имеет несколько пользователей, однако может закончиться несколько тысяч (максимум)
Есть еще один подход что я не рассмотрел, который мог бы решить это оптимизированным образом?
Когда вы включаете/включаете информацию о профиле с помощью вызовов, этого недостаточно? –
Я использую поставщик членства .net, а не присоединяюсь к сущности в моем запросе. Если есть способ сделать это, тогда здорово? – Macros
Хорошо, вижу. Нет, не элегантный способ сделать это. См. [This] (http://blogs.teamb.com/craigstuntz/2010/03/05/38558/). –