我从不同的问题中得出结论(在我提出问题时在下面列出)。
我想做五件事,据我从这些问题和答案中可以看出......所有这些都可以在我的 OnModelCreating 方法中完成。
Preface:我正在使用 Asp.Net Identity 1.1-alpha 的最新夜间位
我想使用“UserId”而不是 Id 作为我的属性
AspNetUsers 表中的用户 ID。我知道这会涉及到
在 OnModelCreating 期间使用“HasColumnName”。
我想使用 Guid(唯一标识符)作为我的数据类型
用户 ID(而不是字符串)。我了解这涉及使用我的
为 IUser 类和 IUserStore 等拥有自己的 POCOS,如Hao Kung 所示
在他的回答中...
如何更改 Microsoft.AspNet.Identity.EntityFramework.IdentityUser 中的 id 类型 https://stackoverflow.com/questions/19553424/how-to-change-type-of-id-in-microsoft-aspnet-identity-entityframework-identityus/19577113#19577113
- 我想使用我自己的自定义表名称,例如 MyRoles,
MyCUserClaims、MyUserLogins、MyUserRoles、MyUsers 如中所示
这个答案...
使用 Visual Studio 2013 ASP.NET Identity 时如何更改表名称? https://stackoverflow.com/questions/19460386/how-can-i-change-the-table-names-when-using-visual-studio-2013-aspnet-identity
- 所有外键都应与 Asp.net 正确映射
恒浩 (Hao Kung) 在此处展示的身份表...
使用 SQL 脚本创建 ASP.NET Identity 表 https://stackoverflow.com/questions/19932993/create-asp-net-identity-tables-using-sql-script/20057794#20057794
- 我想向 FirstName 的 ApplicationUser 添加属性
和姓氏。
因此,基于上述...有人可以为我提供 OnModelCreating 方法,该方法将相应地创建这些身份表,将 UserId 作为 Guid 类型(唯一标识符)用户的 Id 列,在具有自定义名称的表中,使用适当的外键关系,以及 ApplicationUser 的 FirstName 和 LastName 两个附加属性?
我相信您可能过于线性地看待解决方案,认为它可以一次性完成。
我建议如下:
实施你自己的会员提供者 http://msdn.microsoft.com/en-us/library/system.web.security.membershipprovider(v=vs.110).aspx并重写方法以使用您想要与用户交互的确切表和逻辑。如果这是 ASP.NET MVC 4 或更新版本的实现,您可能需要研究更新的 SimpleMembership 实现并改为实现扩展会员提供者 http://msdn.microsoft.com/en-us/library/webmatrix.webdata.extendedmembershipprovider(v=vs.111).aspx。 SimpleMembership 默认情况下有一个很好的 UserProfile 系统,允许您添加名字、姓氏和其他自定义属性。
此外,如果您使用实体框架,则列表中的某些操作可以独立于此实现来完成。如果您首先使用代码,则只需将 [Key] 属性添加到属性 UserId 即可标记模型的主键,与此类似。如果表名不是 POCO 的标准复数形式,您还可以使用 [Table(String name)] 作为表名。不要忘记包含对 System.ComponentModel.DataAnnotations 的引用。
[Table("CustomUsers")]
public class User
{
[Key]
public Guid UserId { get; set; }
}
EDIT: Here https://stackoverflow.com/a/15083137/1228414是另一个问答,其中包含许多实现您自己的 MembershipProvider 的相关链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)