ASP.NET MVC Code First数据迁移与重命名的数据库表

时间:2017-03-18 16:27:59

标签: asp.net-mvc entity-framework ef-code-first

我正在使用实体框架首先使用代码开发ASP.NET MVC Web应用程序。

我面临的问题是我使用数据迁移对一些表进行了重命名,显然一切都很顺利我甚至看到数据库中的表名已更新。

但是当我创建一个新的数据迁移时,它总是采用表的原始名称(xxxxes),而不是最新的(xxxxs),我必须手动更改迁移脚本以避免错误:

  

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

更糟糕的是,索引控制器现在失败了,因为当它尝试ToList()方法时会抛出以下错误:

  

EntityFramework.SqlServer.dll中发生了'System.Data.Entity.Core.EntityCommandExecutionException'类型的异常但未在用户代码中处理   附加信息:执行命令定义时发生错误。有关详细信息,请参阅内部异常。

内心细节:

  

{“无效的对象名称'dbo.xxxxs'。”}

我查看了整个项目,试图找到这个表仍然用原始名称引用的地方,但我什么也没找到。

有关如何解决这个问题的想法吗?

修改

我做了什么,也许这里的一切都是破坏的,就是创建这样的数据迁移并运行它。

public partial class Update5 : DbMigration
{
    public override void Up()
    {
        RenameTable("xxxxes", "xxxxs");
    }

    public override void Down()
    {

    }
}

我已经看到Down()方法应该有相反的动作,我没有添加......

1 个答案:

答案 0 :(得分:1)

您可以尝试通过数据注释添加表名。 请检查此link

默认情况下,EF将使用您的类的名称来命名表。如果更改了表名,EF将不知道哪个类与哪个表对应。因此,如果您在类上方添加注释的表名,EF将知道要查找的内容。