ASP.netを使用して、コード内のプロファイルの特定のフィールドにアクセスするための推奨される最良の方法があります。私は古いProblem-Design-Solution2.0の本を調べていましたが、DB内のすべてのメンバーをプルしてから、各メンバーのプロファイルを反復処理することでそれを実行します(以下のコードを参照)。もっと良い方法はありますか?
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
}
}
それでも各プロファイルのDBをラウンドトリップしますが、メンバーを使用した場合ほど多くは実行されない可能性があります...