Используя ASP.net, есть ли лучший рекомендуемый способ доступа к определенному полю профиля в коде.Я искал в своей старой книге Problem-Design-Solution 2.0, и она делает это, вытягивая всех членов в БД, а затем перебирая профиль каждого (см. Код ниже).Есть ли лучший способ?
for each (MembershipUser user in Membership.GetAllUsers())
{
ProfileCommon userProfile = profile.GetProfile(user.UserName);
if (userProfile.mysetting == desiredValue)
{
//do something
}
}
Редактировать 1
Я обнаружил, что это можно сделать немного эффективнее, чем вытягивать элементы, а затем вытягивать профили.Возможно, что не у всех участников есть профиль, поэтому, если вы используете следующий код, вы извлечете все профили (которых может быть меньше, чем членов, а затем сможете выполнить итерацию по нему:
for each (ProfileInfo theProfile in ProfileManager.GetAllProfiles (ProfileAuthenticationOption.All)
{
ProfileCommon pc = ProfileBase.Create(theProfile.UserName)
if (pc.mysetting == desiredValue)
{
//do something
}
}
Он по-прежнему выполняет обход БД для каждого профиля, но может делать это не так часто, как если бы мы использовали элементы ...