【问题标题】:Adding a new property in Identity Framework在身份框架中添加新属性
【发布时间】:2015-11-28 20:05:54
【问题描述】:

首先,IdentityModels.cs 看起来像这样: 使用 Microsoft.AspNet.Identity.EntityFramework;

namespace WebApplication2.Models
{

    public class ApplicationUser : IdentityUser
    {
    }

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("DefaultConnection")
        {
        }
    }
}

我把这个文件改成了这个:

namespace WebApplication2.Models
{

    public class ApplicationUser : IdentityUser
    {
        public string Email { get; set; }
    }

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("DefaultConnection")
        {
            Database.SetInitializer<ApplicationDbContext>(new DropCreateDatabaseAlways<ApplicationDbContext>());
        }
    }
}

我还在 AccountViewModel.cs 中向 RegisterViewModel 添加了电子邮件。

我也将 AccountController 更改为:

 var user = new ApplicationUser() { UserName = model.UserName, Email = model.Email};
                var result = await UserManager.CreateAsync(user, model.Password);

当我点击注册时,它在这一行失败:

 var result = await UserManager.CreateAsync(user, model.Password);

这样说:

System.Data.SqlClient.SqlException:列名“电子邮件”无效。 为什么我会收到此错误?我错过了什么?谢谢。

【问题讨论】:

  • 您在进行更改后是否更新了数据库架构?似乎模型的更改没有反映在您的数据库中。
  • @PythaLye 我正在使用这个:Database.SetInitializer&lt;ApplicationDbContext&gt;(new DropCreateDatabaseAlways&lt;ApplicationDbContext&gt;()); 所以,应该在我添加电子邮件后删除并创建数据库。

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


【解决方案1】:

打开 nuget 控制台并输入:

update-database -force

在此之前,请确保您已开启自动迁移。 你可以通过这样做来打开它

enable-migrations

【讨论】:

  • 我在我的代码中删除并重新创建数据库,它不应该工作吗?
  • 该命令有效!但我想知道为什么.. 为什么我需要它?谢谢
  • 因为您似乎并没有通过删除 db 来更新架构。
  • 你可以通过辅助类来完成。这是在其他地方被问到的问题:stackoverflow.com/questions/13342516/…
猜你喜欢
  • 2013-11-02
  • 2019-10-10
  • 2022-01-23
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多