如何向MembershipUser添加属性

时间:2012-05-30 20:40:15

标签: c# asp.net asp.net-mvc razor

我使用MVC4和它附带的默认成员/用户表。我在会员表中添加了一个PhoneNumber列。

当我通过Membership.GetUser()获得MembershipUser时,它有一个属性,如电子邮件。我想这样做,因此MembershipUsers也有我添加的PhoneNumber列的属性。我该怎么做呢?

提前感谢您的所有帮助。

3 个答案:

答案 0 :(得分:3)

您可能应该使用配置文件提供程序。

如果你更愿意坚持使用Membership,那么你正在寻找创建一个派生自MembershipUser的自定义类,以及一个自定义成员资格提供者来使用它。

答案 1 :(得分:0)

您需要为此类案例实施自定义成员资格提供程序。这是一个很好的教程。 http://www.codeproject.com/Articles/165159/Custom-Membership-Providers

答案 2 :(得分: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