2013-10-26 44 views
2

身份管理器用户Guid但数据库类型仍然是字符串?这显然是有意义的,如果你想使用不支持uniqueidentifier类型的数据库..但是如果我们需要使用GUID?GUID但不是真GUID

有什么办法可以修改数据库类型为uniqueidentifier?我成功地重新命名我的表“用户”,但与HasColumnType同样的伎俩does not工作使用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

能否请您给例如数据库,它不支持GUID类型的? –

+1

旧版本的Access?或mySQL? –

回答

0

这可能不是一个直接的解决你的问题,但至少隧道尽头有光线:Asp.net Identity 2.0.0-alpha1 has recently been announced的预览。

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

在1.0 PK的用户和角色的类型为字符串。这意味着当ASP.NET Identity系统在使用实体框架的Sql Server中持久化时,我们使用的是nvarchar。围绕Stack Overflow的这个默认实现进行了很多讨论,并且基于传入的反馈,我们提供了一个扩展钩子,您可以在其中指定应该是用户和角色表的PK。如果您正在迁移您的应用程序,并且应用程序正在存储UserIds是GUID或整数,则此扩展钩子特别有用。

你可以阅读更多关于释放和如何得到它公布后:Announcing preview of Microsoft.AspNet.Identity 2.0.0-alpha1