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

Asp.net identity: Why the clustered index is on guid (nvarchar) column and how to change this?

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

  1. 更新我的应用程序,使聚集索引列位于 int
  2. 将主键存储从 guid 更改为 int。

你有什么建议? 如果第一个解决方案是可行的方法,那么 entity framework 是否提供了一种实现方法?
ASP.NET Identity - How to change the dbo.AspNetUsers.Id into a nonclustered index? 是唯一的方法吗

对于 #2,如果您不需要(或不想)使用 GUID 作为主键,您可以像这样将它们更改为整数:

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> 
{
}