2

身份管理器用户 Guid 但数据库类型仍然是字符串?如果您想使用不支持 uniqueidentifier 类型的数据库,这显然是有道理的。但是如果我们需要使用 GUID 怎么办?

有什么办法可以将数据库类型修改为唯一标识符?我成功地将我的表重命名为“用户”,但同样的技巧不适用于 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");
    }
}
4

1 回答 1

0

这可能不能直接解决您的问题,但至少隧道尽头有曙光:Asp.net Identity 2.0.0-alpha1 的预览版最近已经公布

新功能之一是用户和角色的主键类型的可扩展性:

在 1.0 中,用户和角色的 PK 类型是字符串。这意味着当使用 Entity Framework 将 ASP.NET 身份系统持久化在 Sql Server 中时,我们使用的是 nvarchar。在 Stack Overflow 上围绕这个默认实现进行了很多讨论,并且根据收到的反馈,我们提供了一个可扩展性挂钩,您可以在其中指定用户和角色表的 PK。如果您正在迁移应用程序并且应用程序存储的 UserId 是 GUID 或整数,则此可扩展性挂钩特别有用。

您可以在公告帖子中阅读有关该版本以及如何获取该版本的更多信息:宣布 Microsoft.AspNet.Identity 2.0.0-alpha1 的预览版

于 2013-12-30T11:00:58.567 回答