当我查看ASP.NET 3 Identity时,它使用string
而不是Guid
作为唯一主键。如何使EF-Core使用Guid而不是字符串作为其ID /主键
在我Entity Framework
code first
用户ApplicationUser
I类继承Identity类
public class ApplicationUser : IdentityUser
{
}
导致当我创建我的实体框架迁移表aspnetusers
得到与nvarchar(450)
代替uniqueidentifier
当我把它与ASP.NET Identity 2
ENtity Framework
项目比较时,它创建了一个ID字段uniqueidentifier
而不是nvarchar(450)
我会想象数据库性能主键和uniqueidentifier
外键会比nvarchar(450)
更好是否有使用的唯一键Guid
代替string
和uniqueidentifier
,而不是nvarchar(450)
与ASP.NET Identity 3
的方法吗?
有一个previous question如何将字符串转换为Guid,但我希望数据库表Id是一个Guid。
我发现另一个question以及以前的BETA时,长度为nvarchar(128)。给出的理由是,并非所有的数据库都支持Guids,并且它的灵活性已经改变。
是否必须有一个简单的方法来从字符串更改为Guid而不用重写整个identity 3
?
nvarchar(450)
确实有点矫枉过正,并在创建SQL Server数据库约束时给出各种警告。数据库管理员肯定不会像这些警告。
请注意,有一个EntityFramework 7/EntiryFramework Core 1.0中的bug直到rc1-final,这会在使用外键的泛型时破坏迁移,而这些泛型不会通过内置类型(如Guid)关闭。这已在rc2-nightlies中解决了一段时间,但尚未发布。 https://github.com/aspnet/EntityFramework/issues/3545 – Tseng