Asp.net 当我使用迁移更新数据库时,用户无法登录
我使用Azure DB在本地开发了一个ASP.NETMVC5项目。我的连接字符串指向我的Azure SQL数据库。发布后,该项目在本地和Azure上都能正常工作 我还使用ASP.Net标识。我可以毫无问题地注册和登录,但当我在定义新模型类后进行任何迁移后更新数据库时,我无法使用现有密码/电子邮件登录 我所做的唯一更改是:Asp.net 当我使用迁移更新数据库时,用户无法登录,asp.net,asp.net-mvc,azure,asp.net-mvc-5,asp.net-identity,Asp.net,Asp.net Mvc,Azure,Asp.net Mvc 5,Asp.net Identity,我使用Azure DB在本地开发了一个ASP.NETMVC5项目。我的连接字符串指向我的Azure SQL数据库。发布后,该项目在本地和Azure上都能正常工作 我还使用ASP.Net标识。我可以毫无问题地注册和登录,但当我在定义新模型类后进行任何迁移后更新数据库时,我无法使用现有密码/电子邮件登录 我所做的唯一更改是: public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelS
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser {
UserName = model.Email,
Email = model.Email,
FirstName = model.FirstName,
LastName = model.LastName
};
//...
}
}
我在Migrations文件夹中有Date_InitialCreate.cs,用于创建标识表。
我应该删除它吗
编辑-2:
1.我有三次迁移。如您所知,InitialCreate.cs是标准。
2.NameLastNametoUSERS.cs
public partial class NameLastNametoUSERS : DbMigration
{
public override void Up()
{
AddColumn("dbo.AspNetUsers", "FirstName", c => c.String(nullable: false));
AddColumn("dbo.AspNetUsers", "LastName", c => c.String(nullable: false));
}
public override void Down()
{
DropColumn("dbo.AspNetUsers", "LastName");
DropColumn("dbo.AspNetUsers", "FirstName");
}
}
邮政编码
公共覆盖无效
{
编码表
dbo.类别,
c=>新的
{
Id=c.Intnullable:false,identity:true,
Name=c.Stringnullable:false,maxLength:128,
CategoryPhoto=c.字符串,
URLSlug=c.Stringnullable:false,
}
.PrimaryKeyt=>t.Id
`您正在运行什么类型的迁移?您是否可能使用迁移初始值设定项删除并重新创建数据库?请发布您的EF Configuration.cs类。您是否在代码中的任何位置调用database.SetInitializer?您的问题听起来像是在每次迁移期间删除并重新创建数据库。不,我不调用“Database.SetInitializer”,而且当我检查数据库时,我可以看到现在无法登录的注册用户的所有记录。我想,密码哈希正在发生变化。这可能吗?好的-所以新用户以其电子邮件地址作为用户名注册。但旧用户注册时使用的不是电子邮件地址作为用户名用户名?您有多少次迁移?如果只有几次,也发布它们的代码。如果您使用名/姓为所有用户添加种子,这是否解决了问题?例如,您是否只是在读取时生成异常,因为nullable=false…但它们都为null。请检查您是否正在使用一个异常,它确切地告诉您发生了什么.
public partial class NameLastNametoUSERS : DbMigration
{
public override void Up()
{
AddColumn("dbo.AspNetUsers", "FirstName", c => c.String(nullable: false));
AddColumn("dbo.AspNetUsers", "LastName", c => c.String(nullable: false));
}
public override void Down()
{
DropColumn("dbo.AspNetUsers", "LastName");
DropColumn("dbo.AspNetUsers", "FirstName");
}
}
CreateTable(
"dbo.Posts",
c => new
{
Id = c.Int(nullable: false, identity: true),
Title = c.String(nullable: false, maxLength: 250),
PostContent = c.String(nullable: false),
ShortContent = c.String(),
FeaturedPhoto = c.String(),
URLSlug = c.String(nullable: false),
DateAdded = c.DateTime(nullable: false),
DatePublished = c.DateTime(),
Published = c.Boolean(nullable: false),
Category_Id = c.Int(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Categories", t => t.Category_Id)
.Index(t => t.Category_Id);
CreateTable(
"dbo.Images",
c => new
{
Id = c.Int(nullable: false, identity: true),
ImgName = c.String(nullable: false),
ImgSize = c.Int(nullable: false),
ImgFullPath = c.String(),
})
.PrimaryKey(t => t.Id);
}
public override void Down()
{
DropForeignKey("dbo.Posts", "Category_Id", "dbo.Categories");
DropIndex("dbo.Posts", new[] { "Category_Id" });
DropTable("dbo.Images");
DropTable("dbo.Posts");
DropTable("dbo.Categories");
}