如何使EF-Core使用Guid而不是String作为其ID/主键

15 浏览
0 Comments

如何使EF-Core使用Guid而不是String作为其ID/主键

当我查看ASP.NET 3 Identity时,它使用string而不是Guid作为唯一主键。在我的Entity Frameworkcode first用户的ApplicationUser类中,我继承了Identity类

public class ApplicationUser : IdentityUser
{
}

这导致当我创建我的Entity Framework migrations时,会创建一个名为aspnetusers的表,其键类型为nvarchar(450),而不是uniqueidentifier。与此相比,ASP.NET Identity 2Entity Framework项目创建了一个ID字段,其类型为uniqueidentifier,而不是nvarchar(450)

我认为对于数据库性能来说,uniqueidentifier的主键和外键比nvarchar(450)更好。在ASP.NET Identity 3中,是否有一种方法可以使用Guid作为唯一键,而不是string,以及使用uniqueidentifier而不是nvarchar(450)

有一个之前的问题如何将字符串转换为Guid,但我希望数据库表的Id是一个Guid。

我还发现了另一个问题关于之前的BETA版本为什么长度为nvarchar(128)。给出的原因是并非所有数据库都支持Guid,为了灵活性而进行了更改。

是否有一种简单的方法可以在不重写整个identity 3的情况下将字符串更改为Guid?nvarchar(450)真的过度了,创建SQL Server数据库约束时会出现各种警告。数据库管理员肯定不会喜欢这些警告。

0