gpt4 book ai didi

c# - ASP.NET Identity userid 是顺序 guid

转载 作者:太空狗 更新时间:2023-10-30 01:18:14 25 4
gpt4 key购买 nike

MVC/EF 的 ASP.NET 身份代码将用户 ID 存储为 nvarchar(128)。这看起来像一个 GUID。我更喜欢使用顺序 GUID 作为 ID/私钥来提高性能。如何验证为 ASP.NET Identity 生成 GUID 的代码是顺序的?我在查找代码库的那部分时遇到问题。

最佳答案

Identity 是为与不同的持久性技术一起工作而构建的。我什至看到了在不是关系数据库的 Azure 表上存储数据的标识的实现。

顺序 GUID 只是 SQL Server 的一个特性,甚至不是每个版本的 SQL Server 都支持顺序 GUID(例如,SQL Azure 不知道顺序 GUID)。

但是如果您将 User.Id 设置为 Guid 类型并使用支持顺序 ID 的 SQL Server,您的表将使用 类型的 ID 创建sequentialguid.
我可以验证这一点 - 我在尝试将本地创建的数据库移植到 Azure SQL 中时遇到了几次类型问题。

更新

我的建议是将 ID 更改为 Guid - 与将其变为 int 的其他建议相同 - 您会在网上找到大量如何操作的指南。生成ID的地方在这里:

namespace Microsoft.AspNet.Identity.EntityFramework
{
/// <summary>
/// Default EntityFramework IUser implementation
///
/// </summary>
public class IdentityUser : IdentityUser<string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>, IUser, IUser<string>
{
public IdentityUser()
{
this.Id = Guid.NewGuid().ToString();
}

public IdentityUser(string userName)
: this()
{
this.UserName = userName;
}
}
}

这是来自反编译器的框架的一部分。您很可能已经继承了此类以创建自己的 ApplicationIdetntityUser

但是,如果您如此热衷于顺序 guid,最安全的方法是让 SQL Server 为您创建它们。您可以通过在用户对象的 Guid Id 属性上添加 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 来实现。

您可以自己生成顺序 guid,但最终您会遇到来自不同线程的冲突。我建议您不要浪费时间,让 SQL Server 为您完成这项工作 - 那里有内置机制。

关于c# - ASP.NET Identity userid 是顺序 guid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com