我有点卡住了。
我有一个应用程序,我刚刚将AspNet.Identity更新为2.0,以便利用新的密码重置方法。该应用程序也使用sql azure。
我遇到的一个问题是我的ApplicationUser类中有一个名为EmailAddress的属性。既然Identity具有属性Email属性,我决定删除它并创建迁移以更新我的数据库。当我对我的本地SQL服务器运行它时,这工作正常。迁移看起来像这样:
public partial class EmailFieldChange : DbMigration
{
public override void Up()
{
Sql("UPDATE dbo.AspNetUsers SET Email = EmailAddress");
DropColumn("dbo.AspNetUsers", "EmailAddress");
}
public override void Down()
{
AddColumn("dbo.AspNetUsers", "EmailAddress", c => c.String());
Sql("UPDATE dbo.AspNetUsers SET EmailAddress = Email");
}
}
但是我现在正在尝试将我的更改发布到azure,并且我发现了以下错误:
此版本的SQL Server不支持没有聚簇索引的表。请创建聚簇索引,然后重试。 无法删除约束。查看以前的错误。 该语句已终止。
这一切都很好,但EmailAddress字段没有编入索引!!表中唯一的索引是在我没有触及的Id字段上。我所有的谷歌搜索引导我与人们试图改变我没有做的主键的问题
有人能给我任何见解吗?
编辑:
我现在也试过这个,没有成功。
Sql("UPDATE dbo.AspNetUsers SET Email = EmailAddress");
CreateIndex("dbo.AspNetUsers", "Id", true, "PK_dbo.AspNetUsers");
DropColumn("dbo.AspNetUsers", "EmailAddress");