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

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

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

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

  • 我想在AspNetUsers表中使用“UserId”而不是Id作为我的Users Id的属性。 我理解这将涉及在OnModelCreating期间使用“HasColumnName”。

  • 我想使用Guid(uniqueidentifier)作为我的UserId(而不是字符串)的数据类型。 据我所知,这涉及到我自己的POCOS用于IUser类和IUserStore等,因为Hao Kung在这里的答案中表示……

如何在Microsoft.AspNet.Identity.EntityFramework.IdentityUser中更改id的类型

  • 我想使用我自己的自定义表名,如MyRoles,MyCUserClaims,MyUserLogins,MyUserRoles,MyUsers,如本答案中所示……

使用Visual Studio 2013 ASP.NET身份时如何更改表名?

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

使用SQL脚本创建ASP.NET标识表

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

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

我相信你可能会在解决方案上看起来过于线性,认为它可以在一次完成。

我会建议如下:

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

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

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

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

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