标识管理器用户Guid,但是数据库类型仍然是字符串吗?如果您想使用不支持unique标识符类型的数据库,这显然是有意义的。但是如果我们需要使用GUID呢?
有什么方法可以将数据库类型修改为database吗?我成功地将我的表重命名为"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");
}
}发布于 2013-12-30 11:00:58
这可能不是您的问题的直接解决方案,但至少在隧道的末尾有光明: Asp.net标识的预览2.0.0-字母1 最近被宣布。
新特性之一是用户和角色的主键类型的可扩展性:
在1.0中,用户和角色的PK类型是字符串。这意味着当使用实体框架将ASP.NET标识系统持久化到Server中时,我们使用的是nvarchar。围绕堆栈溢出的默认实现进行了大量讨论,基于传入的反馈,我们提供了一个扩展性挂钩,您可以在其中指定用户和角色表的PK。如果您正在迁移应用程序,并且应用程序存储的UserIds是GUID或ints,则这种扩展性挂钩特别有用。
您可以在公告帖子:宣布Microsoft.AspNet.Identity 2.0.0-字母1预览上阅读更多关于该发布以及如何获得它的信息。
https://stackoverflow.com/questions/19604386
复制相似问题