我从不同的问题中提取(下面列出了我提出的问题)。
我想做五件事,据我所知,从这些问题和答案中。。。所有这些都可以在我的OnModelCreating方法中完成。
前言:我正在使用Asp.Net Identity 1.1阿尔法的最新夜间比特
-
我想使用"UserId"而不是Id作为AspNetUsers表中的用户Id。我知道这将涉及在OnModelCreating期间使用"HasColumnName"。
-
我想使用Guid(uniqueidentifier)作为我的UserId(而不是字符串)。我知道这涉及到使用拥有IUser类和IUserStore等的POCOS,如Hao Kung所示在他的回答中。。。
如何更改Microsoft.AspNet.Identity.EntityFramework.IdentityUser 中的id类型
- 我想使用我自己的自定义表名,例如MyRoles,如中所示的MyCUserClaims、MyUserLogins、MyUserRoles和MyUsers这个答案
使用Visual Studio 2013 ASP.NET Identity时,如何更改表名?
- 所有的外键都应该使用Asp.net进行适当的映射郝功在这里展示的身份表
使用SQL脚本创建ASP.NET标识表
- 我想将属性添加到FirstName的ApplicationUser和姓氏
所以,基于以上。。。有人能为我提供OnModelCreating方法吗?该方法将相应地创建这些Identity表,将UserId作为Guid(uniqueidentifier)类型用户的Id列,在具有自定义名称的表中,使用适当的外键关系,并在ApplicationUser上使用FirstName和LastName的两个附加属性?
我认为您可能过于线性地看待解决方案,认为它可以一次性完成。
我建议如下:
实现您自己的MembershipProvider并重写方法,以使用您希望与用户交互的确切表和逻辑。如果这是一个ASP.NET MVC 4或更新版本的实现,您可能希望查看更新的SimpleMembership实现,而不是实现ExtendedMembershipProvider。SimpleMembership默认情况下有一个很好的UserProfile系统,允许您添加FirstName、LastName和其他自定义属性。
此外,如果您使用实体框架,那么列表中的一些事情可以独立于此实现来完成。如果您首先使用代码,那么只需将[key]属性添加到类似于此的属性UserId中,就可以标记模型的主键。如果表名不是POCO的标准复数形式,也可以使用[Table(Stringname)]作为表名。不要忘记包含对System.ComponentModel.DataAnnotations.的引用
[Table("CustomUsers")]
public class User
{
[Key]
public Guid UserId { get; set; }
}
编辑:这是另一个q/a,其中包含许多实现您自己的MembershipProvider的相关链接。
正确答案来自此SO Post。他的答案不是那个特定问题的公认答案,但@pwdst发布了一个答案,其中包括一个OnModelCreating,我修改了它,使其完全按照我在这里的要求进行。上周,我让他在这里发帖,这样我就可以接受他的回答,但他没有这么做……因此,我在回答自己,并引导你在这里找到他的答案。