我需要自己生成新的Guid值。目前我用这种结构创建了帮助表:
(id, aspnet_id)
每当我需要获得用户或用户列表时,我必须加入这两个表。
我是否可以告诉Entity Framework Identity Manager不生成新的Guid,而是使用由我生成的值?
答案 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; }
}