【问题标题】:ASP.NET MVC Code First Data migrations with renamed database tables带有重命名的数据库表的 ASP.NET MVC Code First 数据迁移
【发布时间】:2017-03-18 16:27:58
【问题描述】:

我正在开发一个 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() 方法应该有相反的动作,我没有添加......

【问题讨论】:

  • 所以你只是把名字从'model' + 'es' 改成了'model' + 's'?可能与pluralization有关。
  • @SteveGreene 我已经用更多细节更新了我的问题...

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多