UserManager.CreateAsync 不会在 ApplicationUser 中保存添加的属性

sre*_*mer 5 c# asp.net-mvc-4 asp.net-identity

我已经修改了带有附加地址列的 AspNetUsers 表,并且除了迁移部分之外,还遵循了此处的步骤。我用数据库优先的方法开始了我的项目

我的身份模型具有附加字段

public class ApplicationUser : IdentityUser
{
    public string Email;
    public string Address;
    public string City;
    public string Province;
    public string PostalCode;
}
Run Code Online (Sandbox Code Playgroud)

在 AccountController 中,我像这样构建我的用户:

var user = new ApplicationUser() { 
    UserName = model.UserName,
    Email = model.Email,
    Address = model.Address,
    City = model.City,
    Province = model.Province,
    PostalCode = model.PostalCode
};

var result = await UserManager.CreateAsync(user, model.Password);
Run Code Online (Sandbox Code Playgroud)

如果我逐步执行代码,我会看到用户包含新属性。但是,当它保存时,这些字段在数据库中是空的。是否有我遗漏的内容,或者代码优先迁移是否执行了未涵盖的步骤?

Fun*_*nka 4

我当然不是 ASP.NET Identity 专家,仍在尝试自己掌握基础知识,但我想到了两个建议。

首先,我看到您正在向类添加字段ApplicationUser,而不是属性。这可能就是问题所在。例如,尝试改变

public string Email;
Run Code Online (Sandbox Code Playgroud)

进入

public string Email { get; set; }
Run Code Online (Sandbox Code Playgroud)

其次,您需要运行迁移以便将这些列添加到数据库中。尽管您似乎确实说您的数据库中已经有这些列,所以我认为此步骤不会添加任何内容。(既然您说您是从数据库优先的方法开始的。我只是为了完整起见才提到这一点。)

祝你好运!