我在mvc中有一个DataBase First网站。
我的问题是我想为AspNetUser添加一些点并能够显示/修改它们。例如,当注册时。
所以我添加了例如年龄到AspNetUser更新了数据库。然后我去了edmx DataBase并且到目前为止更新了我的模型。到目前为止,一切都在发挥作用。
现在我去了IdentityModel并添加了年龄。
public class ApplicationUser : IdentityUser
{
public int Age { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
然后我去了RegisterViewModel
public class RegisterViewModel
{
.....
public int Age { get; set; }
}
现在,当我尝试启动网站并登录时,只要按下登录,我就会收到Folowing错误。
自创建数据库以来,支持'ApplicationDbContext'上下文的模型已更改。考虑使用Code First Migrations来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
Zeile 77: // This doesn't count login failures towards account lockout
Zeile 78: // To enable password failures to trigger account lockout, change to shouldLockout: true
Zeile 79: var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
Zeile 80: switch (result)
Zeile 81: {
一旦我评论出最后两个变化,一切都会再次起作用。我想知道我做错了什么。
答案 0 :(得分:0)
为了让您的项目使用其他属性,您需要添加一个&#34; Migration&#34;为了使Entity Framework Code First能够自动更新您的数据库 -
从&#34;工具&#34;打开NuGet包管理器控制台。 Visual Studio中的菜单。
输入&#34; add-migration AddedUserProperties&#34;
输入&#34; update-database&#34;
有关详细信息,请参阅Code First Migrations on MSDN。
根据您的项目配置,您可能需要输入&#34; enable-migrations&#34;在此之前可以为您设置代码首次迁移(如果已经设置了,您应该在项目中有一个&#34;迁移&#34;目录)。
如果模型已更改,或者只是每次运行代码时,也可以将代码设置为首先删除并重新创建数据库。
显然删除数据库将删除已经注册的任何用户,因此这可能最好在早期的原型设计阶段完成并使用&#34; DropCreateDatabaseWhenModelChanges&#34;初始化而不是&#34; DropCreateDatabaseAlways&#34;,或者通过为测试用户设置种子,以便使用数据库自动重新创建这些用户。
要做到这一点 -
Database.SetInitializer(new DropCreateDatabaseWhenModelChanges<ApplicationDbContext>());
有关详情,请参阅Understanding Database Initializers in Entity Framework Code First。