私はMVC4とそれに付属するデフォルトのメンバー/ユーザーテーブルを使用しています。メンバーシップテーブルにPhoneNumber列を追加しました。
Membership.GetUser()でMembershipUserを取得すると、Eメールなどのプロパティがあります。MembershipUsersにも、追加したPhoneNumber列のプロパティがあるようにします。どうすればこれを行うことができますか?
よろしくお願いします。
私はMVC4とそれに付属するデフォルトのメンバー/ユーザーテーブルを使用しています。メンバーシップテーブルにPhoneNumber列を追加しました。
Membership.GetUser()でMembershipUserを取得すると、Eメールなどのプロパティがあります。MembershipUsersにも、追加したPhoneNumber列のプロパティがあるようにします。どうすればこれを行うことができますか?
よろしくお願いします。
これには、おそらくプロファイルプロバイダーを使用する必要があります。
このためにMembershipを使い続けたい場合は、MembershipUserから派生したカスタムクラスと、それを使用するためのカスタムMembershipプロバイダーを作成することを検討しています。
membership.getuser()が使用するストアドプロシージャを呼び出してみませんか。
3つしかありません。
これらを実際に拡張するか、より安全なクローンを作成して、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
このような場合は、カスタムメンバーシッププロバイダーを実装する必要があります。これは同じことについての素晴らしいチュートリアルです。 http://www.codeproject.com/Articles/165159/Custom-Membership-Providers