C# 删除表并在代码中生成新表
在一个新创建的MVC4 web项目中,我在服务器资源管理器(DataConnections…,鼠标右键单击)中删除一个表,然后在PackageManager控制台(PMC)中运行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类的数据模型
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迁移没有足够的信任,无法让它自动迁移生产数据(并不是说迁移不好,但一个小错误可能会破坏生产数据。我不愿意冒这个风险。)