C# 删除表并在代码中生成新表

C# 删除表并在代码中生成新表,c#,asp.net,asp.net-mvc,nuget-package,C#,Asp.net,Asp.net Mvc,Nuget Package,在一个新创建的MVC4 web项目中,我在服务器资源管理器(DataConnections…,鼠标右键单击)中删除一个表,然后在PackageManager控制台(PMC)中运行 updatedatabase-verbose-force 在同一数据库中生成同名的新表。但是PMC只会尝试执行“ALTER”命令,这不是我想要它做的,它会输出一个错误 找不到对象“dbo.UserProfile”,因为它不存在或不存在 您没有权限 它现在如何解决这个问题 更新 下面是UserProfile类的数据模型

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

updatedatabase-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

                }                   
                );

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

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

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

如果没有,您可以删除并重新创建数据库,然后执行一个操作


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

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

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

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

如果没有,您可以删除并重新创建数据库,然后执行一个操作

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