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

时间:2014-05-06 16:20:41

标签: c# asp.net-mvc-4 asp.net-identity

我已使用其他地址列修改了AspNetUsers表,并遵循了除迁移部分之外的步骤here。我用数据库第一种方法开始我的项目

我的身份模型还有其他字段

public class ApplicationUser : IdentityUser
{
    public string Email;
    public string Address;
    public string City;
    public string Province;
    public string PostalCode;
}

在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);

如果我单步执行代码,我会看到用户包含新属性。但是,当它保存时,这些字段在数据库中是空的。有没有我错过的或代码优先迁移做了一个尚未涵盖的步骤?

1 个答案:

答案 0 :(得分:3)

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

首先,我发现您要将字段添加到ApplicationUser类,而不是属性。这可能是问题所在。例如,尝试更改

public string Email;

public string Email { get; set; }

其次,您需要运行迁移才能将这些列添加到数据库中。虽然您似乎确实已经说过您已经在数据库中拥有这些列,但我认为此步骤不会添加任何内容。 (因为你说你开始使用数据库优先方法。我只是为了完整性而提到这一点。)

祝你好运!