我可以手动为Entity Framework AspNet Identity生成UserId吗?

时间:2017-04-08 14:17:35

标签: c# entity-framework asp.net-identity

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

(id, aspnet_id)

每当我需要获得用户或用户列表时,我必须加入这两个表。

我是否可以告诉Entity Framework Identity Manager不生成新的Guid,而是使用由我生成的值?

1 个答案:

答案 0 :(得分:0)

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

除此之外,使用Entity Framework数据库值必须在类的构造函数中设置。如果不是,则覆盖数据库的默认值,但数据库中存在的键(自动编号)和字段除外,但模型不知道。

因此,如果您创建一个新的IdentityUser,则使用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或直接添加用户,都可以使用。所以答案是,是的,你可以。

作为旁注,您还可以扩展IdentityUser以添加字段:

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

    public DateTime? LastLogin { get; set; }
}
相关问题