У меня есть система, которая позволяет пользователям планировать конференц-звонки и приглашать людей, используя свой адрес электронной почты. Это реализовано в ASP.net MVC 3 с использованием EntityFramework в шаблоне Repository. Когда пользователь вошел в систему, я хочу отобразить список предстоящих вызовов, которые они либо создали, либо на которые они были приглашены. В списке должны отображаться сведения о вызове, а также имя / адрес электронной почты организатора, которые сохраняются в поле «Имя пользователя» и «Профиль» создателя вызовов.
Когда органайзер является вошедшим в систему пользователем, это нормально, однако, когда вызов был организован другим пользователем, я извлекаю пользователя по идентификатору пользователя (так как он сохраняется для вызова), а затем извлекаю его профиль, чтобы отобразить его имя и ссылка на их электронную почту - если запланировано большое количество звонков или если я добавлю список исторических звонков, это может привести к значительному количеству запросов к базе данных, которые вообще не будут оптимальными.
2 подхода, которые я рассмотрел:
- Сохраните имя и адрес электронной почты организатора при создании вызова. Однако существует вероятность, что организатор впоследствии обновит эти данные, что может привести к отображению неверной / устаревшей контактной информации.
- Загрузите все данные пользователей в хеш-таблицу и каждый раз запрашивайте это - система в настоящее время находится на ранних стадиях и имеет мало пользователей, однако может закончиться несколькими тысячами (максимум)
Есть ли другой подход, который я не рассматривал, который мог бы решить эту проблему оптимизированным способом?