我是否可以手动为实体框架 AspNet 标识生成用户 ID



我需要自己生成新的 Guid 值。目前,我使用以下结构创建了帮助表:

(id, aspnet_id)

每当我需要获取用户或用户列表时,我都必须连接这两个表。

是否可以告诉实体框架标识管理器不生成新的 Guid,而是使用由我生成的值?

你是对的,guid 不是在数据库中生成的。如果您查看该表,您会注意到该字段没有默认值。

除此之外,使用实体框架时,必须在类的构造函数中设置数据库值。否则,将覆盖数据库的默认值,但数据库中存在但模型不知道的键(自动编号(和字段除外。

因此,如果创建新的标识用户,则会使用 Guid 设置该 ID。但您可以覆盖该值:

var appUser = new IdentityUser
{
    UserName = model.Email,
    Email = model.Email,
    Id = "the desired guid"
};
var identityResult = await userManager.CreateAsync(appUser, model.Password);

无论您如何添加用户,使用userManager或直接添加用户,这都将起作用。所以答案是,是的,你可以。

作为旁注,您还可以扩展身份用户以添加字段:

public class ApplicationUser : IdentityUser
{
    [Required]
    public int aspnet_id{ get; set; }
    public DateTime? LastLogin { get; set; }
}

最新更新