我使用 MVC4 和它附带的默认成员/用户表。我在 Membership 表中添加了一个 PhoneNumber 列。
当我使用 Membership.GetUser() 获得 MembershipUser 时,它具有诸如电子邮件之类的属性。我想让 MembershipUsers 也有一个我添加的 PhoneNumber 列的属性。我该怎么做呢?
提前感谢您的所有帮助。
我使用 MVC4 和它附带的默认成员/用户表。我在 Membership 表中添加了一个 PhoneNumber 列。
当我使用 Membership.GetUser() 获得 MembershipUser 时,它具有诸如电子邮件之类的属性。我想让 MembershipUsers 也有一个我添加的 PhoneNumber 列的属性。我该怎么做呢?
提前感谢您的所有帮助。
您可能应该为此使用 Profile 提供程序。
如果您宁愿为此坚持使用 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