身份管理器用户Guid但数据库类型仍为字符串?如果您想要使用不支持uniqueidentifier类型的数据库,这显然是有意义的..但是如果我们需要使用GUID呢?
我们有什么方法可以将数据库类型修改为uniqueidentifier?我成功地将我的表重命名为“User”,但同样的技巧不适用于HasColumnType以使用GUID
我试过了:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>()
.ToTable("Users", "dbo").Property(p => p.Id).HasColumnType("uniqueidentifier");
modelBuilder.Entity<ApplicationUser>()
.ToTable("Users", "dbo").Property(p => p.Id).HasColumnType("uniqueidentifier");
}
}
答案 0 :(得分:0)
这可能不是您问题的直接解决方案,但至少在隧道尽头有光:Asp.net Identity 2.0.0-alpha1 has recently been announced的预览。
其中一项新功能是用户和角色的主键类型的可扩展性:
在1.0中,用户和角色的PK类型是字符串。这意味着当使用Entity Framework将ASP.NET Identity系统保存在Sql Server中时,我们使用的是nvarchar。围绕Stack Overflow上的这个默认实现进行了大量讨论,并根据传入的反馈,我们提供了一个可扩展性钩子,您可以在其中指定用户和角色表的PK应该是什么。如果要迁移应用程序并且应用程序正在存储UserIds是GUID或整数,则此可扩展性挂钩特别有用。
您可以在宣布信息中详细了解该版本以及如何获取该版本:Announcing preview of Microsoft.AspNet.Identity 2.0.0-alpha1