【问题标题】:Invalid object name using code first Entity Framework on database table在数据库表上使用代码优先实体框架的对象名称无效
【发布时间】:2019-07-29 10:59:02
【问题描述】:

我正在使用实体框架代码优先迁移。我创建了一个迁移来更改数据库中表的名称:

public partial class ChangeNameOfCodePerformanceAnchorTable : DbMigration
{
    public override void Up()
    {
        RenameTable(name: "dbo.Code_PerformanceAnchor", newName: "CodePerformanceAnchor");
    }
    
    public override void Down()
    {
        RenameTable(name: "dbo.CodePerformanceAnchors", newName: "Code_PerformanceAnchor");
    }
}

现在,当我为该表创建控制器时.. 在索引操作上我有这个:

public ActionResult Index()
{
    return View(db.CodePerformanceAnchor.Include(c => c.CodePhase).ToList());
}

当我运行应用程序以访问该特定索引页面时,我收到此错误:

无效的对象名称“dbo.CodePerformanceAnchors”。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:无效的对象名称“dbo.CodePerformanceAnchors”。

我的应用程序中唯一称为CodePerformanceAnchors 的是控制器。型号为CodePerformanceAnchor。

public virtual DbSet<CodePerformanceAnchor> CodePerformanceAnchor { get; set; }

对于解决此错误的任何帮助将不胜感激。

【问题讨论】:

  • Pluralization 是默认值。检查数据库中表的实际名称。

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


【解决方案1】:

您有 2 个表名:

CodePerformanceAnchor
和
CodePerformanceAnchors(末尾加s)

您还可以检查this(可插入约定)或this(指定表名)

【讨论】:

  • 对不起,我很困惑..我该如何解决?
  • 自创建 ChangeNameOfCodePerformanceAnchorTable 以来,您是否更改过它? Up 方法使用CodePerformanceAnchor 为什么 Down 方法使用CodePerformanceAnchors。调用 Down 时似乎会抛出错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 2016-11-12
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多