Asp.net身份:为什么聚簇索引在guid(nvarchar)列上以及如何更改它?

时间:2015-01-14 12:27:16

标签: c# asp.net sql-server asp.net-identity

Asp.net标识将主键创建为具有聚簇索引的nvarchar(128)。 基于http://www.sqlskills.com/blogs/kimberly/guids-as-primary-keys-andor-the-clustering-key/,我想要

  1. 更新我的应用程序,使聚簇索引的列在int
  2. 从主要密钥存储的guid更改为int。
  3. 你会建议什么? 如果第一个解决方案是可行的方法,实体框架是否提供了实现此方法的方法?
    ASP.NET Identity - How to change the dbo.AspNetUsers.Id into a nonclustered index?唯一的方式

1 个答案:

答案 0 :(得分:3)

对于#2,如果您不需要(或想要)使用GUID作为主键,您可以将它们更改为int,如下所示:

public class ApplicationUser : IdentityUser<int, ApplicationUserLogin, 
    ApplicationUserRole, ApplicationUserClaim>
{
}

public class ApplicationUserLogin : IdentityUserLogin<int>
{
}

public class ApplicationUserClaim : IdentityUserClaim<int>
{
}

public class ApplicationRole : IdentityRole<int, ApplicationUserRole>
{
}

public class ApplicationUserRole : IdentityUserRole<int>
{
}

然后声明你的DbContext:

public class MyContext: IdentityDbContext<ApplicationUser, ApplicationRole, int,
  ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim> 
{
}