GUID但不是真正的GUID

时间:2013-10-26 07:59:19

标签: asp.net-identity

身份管理器用户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");
    }
}

1 个答案:

答案 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