當我查看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