0

私はMVC4とそれに付属するデフォルトのメンバー/ユーザーテーブルを使用しています。メンバーシップテーブルにPhoneNumber列を追加しました。

Membership.GetUser()でMembershipUserを取得すると、Eメールなどのプロパティがあります。MembershipUsersにも、追加したPhoneNumber列のプロパティがあるようにします。どうすればこれを行うことができますか?

よろしくお願いします。

4

3 に答える 3

3

これには、おそらくプロファイルプロバイダーを使用する必要があります。

このためにMembershipを使い続けたい場合は、MembershipUserから派生したカスタムクラスと、それを使用するためのカスタムMembershipプロバイダーを作成することを検討しています。

于 2012-05-30T20:46:06.153 に答える
0

membership.getuser()が使用するストアドプロシージャを呼び出してみませんか。

3つしかありません。

  • dbo.aspnet_Membership_GetUserByEmail
  • dbo.aspnet_Membership_GetUserByName
  • dbo.aspnet_Membership_GetUserByUserId

これらを実際に拡張するか、より安全なクローンを作成して、MVCから直接呼び出すことができます。

最も人気のあるものは次のとおりです。

USE [MVCTemplate]
GO

/****** Object:  StoredProcedure [dbo].[aspnet_Membership_GetUserByUserId]    Script Date: 05/30/2012 22:12:08 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER OFF
GO

CREATE PROCEDURE [dbo].[aspnet_Membership_GetUserByUserId]
    @UserId               uniqueidentifier,
    @CurrentTimeUtc       datetime,
    @UpdateLastActivity   bit = 0
AS
BEGIN
    IF ( @UpdateLastActivity = 1 )
    BEGIN
        UPDATE   dbo.aspnet_Users
        SET      LastActivityDate = @CurrentTimeUtc
        FROM     dbo.aspnet_Users
        WHERE    @UserId = UserId

        IF ( @@ROWCOUNT = 0 ) -- User ID not found
            RETURN -1
    END

    SELECT  m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,
            m.CreateDate, m.LastLoginDate, u.LastActivityDate,
            m.LastPasswordChangedDate, u.UserName, m.IsLockedOut,
            m.LastLockoutDate
    FROM    dbo.aspnet_Users u, dbo.aspnet_Membership m
    WHERE   @UserId = u.UserId AND u.UserId = m.UserId

    IF ( @@ROWCOUNT = 0 ) -- User ID not found
       RETURN -1

    RETURN 0
END
GO
于 2012-05-31T02:17:05.287 に答える
0

このような場合は、カスタムメンバーシッププロバイダーを実装する必要があります。これは同じことについての素晴らしいチュートリアルです。 http://www.codeproject.com/Articles/165159/Custom-Membership-Providers

于 2012-05-31T01:45:45.937 に答える