使用带有Asp.net Identity 1.1 Alpha的Guid和自定义表名创建自定义实现

时间:2013-11-27 19:14:44

标签: c# asp.net asp.net-mvc asp.net-membership asp.net-identity

我从不同的问题中提取(下面列出我提出的问题)。

我想做五件事,据我从这些问题和答案中可以看出......所有这一切都可以在我的OnModelCreating方法中完成。

前言:我正在使用Asp.Net Identity 1.1-alpha的最新夜间位

  • 我想使用“UserId”代替Id作为我的属性 AspNetUsers表中的用户标识。我明白这会涉及到 在OnModelCreating期间使用“HasColumnName”。

  • 我想使用Guid(uniqueidentifier)作为我的数据类型 UserId(而不是字符串)。我明白这涉及到使用我的 拥有IUser类和IUserStore等的POCOS,如Hao Kung所示 在他的回答中......

How to change type of id in Microsoft.AspNet.Identity.EntityFramework.IdentityUser

  • 我想使用我自己的自定义表名,例如MyRoles, MyCUserClaims,MyUserLogins,MyUserRoles,MyUsers如图所示 这个答案......

How can I change the table names when using Visual Studio 2013 ASP.NET Identity?

  • 所有外键都应该与Asp.net适当地映射 郝公的身份表在这里显示......

Create ASP.NET Identity tables using SQL script

  • 我想将属性添加到FirstName的ApplicationUser 和姓氏。

因此,基于以上内容...有人可以为我提供OnModelCreating方法,该方法将相应地创建这些Identity表,其中UserId作为Guid(uniqueidentifier)类型用户的Id列,在具有自定义名称的表中,具有适当的外键关系,以及在FirstName和LastName的ApplicationUser上有两个附加属性吗?

2 个答案:

答案 0 :(得分:0)

我相信你可能会对解决方案过于线性地认为可以一次性完成。

我会建议如下:

实现您自己的MembershipProvider并覆盖方法,以使用您希望与用户交互的确切表格和逻辑。如果这是ASP.NET MVC 4或更新的实现,您可能需要查看较新的SimpleMembership实现,而不是实现ExtendedMembershipProvider。默认情况下,SimpleMembership有一个很好的UserProfile系统,允许您添加FirstName,LastName和其他自定义属性。

此外,如果您使用的是Entity Framework,列表中的某些内容可以独立于此实现完成。如果您首先使用代码,则可以通过将[Key]属性添加到与此类似的属性UserId来标记模型的主键。如果表名不是POCO的标准复数形式,也可以使用[Table(String name)]作为表名。不要忘记包含对System.ComponentModel.DataAnnotations的引用。

[Table("CustomUsers")]
public class User
{
    [Key]
    public Guid UserId { get; set; }
}

编辑:Here是另一个q / a,其中包含许多与实现您自己的MembershipProvider相关的链接。

答案 1 :(得分:0)

正确答案来自SO Post。他不是那个特定问题的接受答案,但是@pwdst发布了一个答案,其中包括我修改过的OnModelCreating,就像我在这里要求的那样。上周我请他在这里发帖,所以我可以接受他的答案,但他没有这样做......因此我正在回答自己,并指示你his answer here