我使用MVC4和它附带的默认成员/用户表。我在会员表中添加了一个PhoneNumber列。
当我通过Membership.GetUser()获得MembershipUser时,它有一个属性,如电子邮件。我想这样做,因此MembershipUsers也有我添加的PhoneNumber列的属性。我该怎么做呢?
提前感谢您的所有帮助。
答案 0 :(得分:3)
您可能应该使用配置文件提供程序。
如果你更愿意坚持使用Membership,那么你正在寻找创建一个派生自MembershipUser的自定义类,以及一个自定义成员资格提供者来使用它。
答案 1 :(得分:0)
您需要为此类案例实施自定义成员资格提供程序。这是一个很好的教程。 http://www.codeproject.com/Articles/165159/Custom-Membership-Providers
答案 2 :(得分:0)
为什么不调用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