質問

私のSQLMemebershipProviderを行います。いカスタムクラスと呼ばれUserProfileを継承するProfileBaseクラスおよびその結果が、先ほど任天堂さんのデータまっていただいた皆様ありがとう"FullName".私たいというループを通じてすべてのユーザーのデータベースのアイライト:プロフィール物件です。反復処理を行うごとに私は呼び出しProfileBase.Create()を新規プロファイルにアクセスします。

まだ時ProfileBase.Create()が呼び出されるのでヒットマSQLデータベースです。私は、こうした見ているだけで確認す。なので、なんだろうけど、日本人の場合これは実際のDBですか?

としみいただけるようなものよりよい解決方法だと思っていまつのDBをすべてのユーザーは、カスタムプ属性?

知っていただ単に"サムネやエンジンに自分の納論文集だそうですが、私は疑問がある場合の方に会員プロバイダです。

役に立ちましたか?

解決

Mike思いを観察します。よっProfileProviderを使用する紺碧TableStorageデータとしてます。したいと思っていリストのユーザプロファイルからデータベース統合に関する情報から会員制プロバイダです。のに時間がかかりましたのでその呼び出しProfileBase.Create()をユーザー名を引数として与えた場合、その行のルックアップ対TableStorage実際に を取得します に関連付けられたデータを保持することをユーザ名です。しかし私は、このメソッドを呼び出すこと Create() は誤解を招くると見てい Load() または Get().現在のコードは以下のようなものです:

    public IEnumerable<AggregatedUser> GetAllAggregatedUsers()
    {
        ProfileInfoCollection allProfiles = this.GetAllUsersCore(
             ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All)
        );

        //AggregatedUser is simply a custom Class that holds all the properties (Email, FirstName) that are being used
        var allUsers = new List<AggregatedUser>();

        AggregatedUser currentUser = null;
        MembershipUser currentMember = null;
        foreach (ProfileInfo profile in allProfiles)
        {
            currentUser = null;
            // Fetch profile information from profile store
            ProfileBase webProfile = ProfileBase.Create(profile.UserName);
            // Fetch core information from membership store
            currentMember = Membership.FindUsersByName(profile.UserName)[profile.UserName];
            if (currentMember == null)
                continue;

            currentUser = new AggregatedUser();
            currentUser.Email = currentMember.Email;
            currentUser.FirstName = GetStringValue(webProfile, "FirstName");
            currentUser.LastName = GetStringValue(webProfile, "LastName");
            currentUser.Roles = Roles.GetRolesForUser(profile.UserName);
            currentUser.Username = profile.UserName;
            allUsers.Add(currentUser);
        }

        return allUsers;
    }

    private String GetStringValue(ProfileBase profile, String valueName)
    {
        if (profile == null)
            return String.Empty;
        var propValue = profile.PropertyValues[valueName];
        if (propValue == null)
            return String.Empty;

        return propValue.PropertyValue as String;
    }

あり(より簡単に、よりperformant)に

  1. 取得すべてのカスタムプロファイル情報からプロバイダと
  2. が合併して会員制プロバイダ情報をより多くの人に見せたいときなどで管理者ページに表示すべき事は何か?

していたのを見 ウェブプロビルダー がIMO本を提供するだけでなく設計時を行頭に付けたカスタム概要性を生成するプロキシクラスです。

他のヒント

だが続く、データベースで呼び出す Save:

の保存方法書の変更 profileのプロパティ値のデータ ソースです。プロファイルのプロバイダによる 量の削減活動に データソース行のみを更新 がIsDirty施設 trueです。この場合のデフォルト SqlProfileProvider.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top