0

私の Entity Framework では、MVC アプリケーションで .Net メンバーシップを使用しています (カスタム プロバイダーを作成しました)。私の質問は次のとおりです。

  1. 作成したエンティティにユーザーを関連付けるにはどうすればよいですか?
  2. IPrincipal を拡張するユーザー エンティティにナビゲーション プロパティをアタッチすることは許容されますか?それとも「クリーン」に保つ必要がありますか?

現在、新しいエンティティをユーザーにアタッチするすべてのアクションで、最初にユーザーを検索する必要があります。その後、頻繁に、ユーザーにナビゲーション プロパティがないため、別の DbSet から結果を取得するために 2 番目のクエリを実行する必要がありますか?

単純化すると、コントローラーは次のようになります。

public ActionResult Index() {
        User u = UserRepository.FindById((int)Membership.getUser().ProviderUserKey);
        List<OtherObject> oList = OtherRepository.FindByUser(u);
}

私がやりたいことは次のようなものです:

public ActionResult Index() {
        List<OtherObject> oList = provider.User.OtherObjectList;
        // or
        List<OtherObject> oList = Membership.GetUser().OtherObjectList;
}

しかし、メンバーシップの使用方法に関してこれが正しいかどうかはわかりません(ユーザーはログイン/アカウントに必要な情報のみを保持しています.

これに関する最後の質問です。これが私のメンバーシップ ユーザーが現在どのように返されているかです。

public override MembershipUser GetUser(string username, bool userIsOnline) {
        User u = UserRepository.FindByUsername(username);
        MembershipUser memU = null;
        if (u != null) {
            // 
            memU = new MembershipUser("MyMembershipProvider",
                        username, u.UserID, u.Email, string.Empty,
                        u.Comment, u.IsApproved, u.IsLockedOut, u.CreationDate,
                        u.LastLoginDate, u.LastActivityDate, u.LastPasswordChangeDate,
                        u.LastLockedOutDate);
        }
        return memU;
    }

だから私はユーザーを検索して新しい を作成しMembershipUser、それを使用してすぐにコントローラーでユーザーを再度検索します-少し冗長に思えますが、これは私がすべきことですか?

4

0 に答える 0