0

在一个新创建的 MVC4 Web 项目中,我在服务器资源管理器中删除了一个表(DataConnections .... 使用鼠标右键单击),然后在包管理器控制台(PMC)中运行

update-database -verbose -force

在同一个数据库中生成一个同名的新表。但是 PMC 只尝试“ALTER”命令,这不是我想要它做的,它输出一个错误

找不到对象“dbo.UserProfile”,因为它不存在或您没有权限。

它现在如何解决这个问题?

更新

这是 UserProfile 类的数据模型

public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string UserEmail { get; set; }
    [DefaultValue(false)]
    public bool IsActivated { get; set; }        
}

这是在配置文件的 Seed 方法中初始化表的代码

    WebSecurity.CreateUserAndAccount("Administrator", "admin",
                new
                {                        
                    UserEmail = "admin@gmail.com",
                    IsActivated=true

                }                   
                );
4

1 回答 1

3

EF Migrations 期望您负责(您可以使用 -Script 选项让 Migrations 生成脚本而不是直接运行 DDL),或者由它负责。混合和匹配不起作用。

如果您知道 UserProfile 的结构(也许您保存了一个脚本?),您可以手动重新创建它,就像您更改之前一样,然后允许 EF Migrations 再次应用迁移。

如果您有适当的数据库备份,请还原该备份并重试。

如果没有,您可以删除并重新创建数据库,然后进行初始迁移

就我个人而言,我总是让 EF Migrations 编写迁移脚本(-Script 选项)。然后我自己应用脚本。这样,我就拥有了在 QA 和 PROD 环境中进行受控迁移所需的一切。我只是对 EF Migrations 没有足够的信任,无法让它自动迁移生产数据(并不是说 Migrations 不好,但一个小错误可能会清除生产数据。我不愿意承担风险。)

于 2013-02-04T18:48:53.847 回答