找不到对象“dbo.Table”,因为它不存在或者您没有权限

时间:2014-04-27 21:47:54

标签: c# sql asp.net-mvc visual-studio ef-migrations

我在尝试使用Update-Database时遇到了Table模型的一些问题,所以我决定删除该表并从头开始。为此,我通过Visual Studio的服务器资源管理器删除了表。但是现在当我尝试使用新版本的Table模型再次使用Update-Database时,我收到错误"找不到对象" dbo.Table"因为它不存在或您没有权限。"

我该如何解决这个问题?我有模型,但我无法生成SQL表。

6 个答案:

答案 0 :(得分:15)

如果在迁移期间重命名表,请仔细检查重命名顺序是否正确:

DropForeignKey("dbo.PartnerTransactions", "partnerID", "dbo.Partners");
RenameTable(name: "dbo.PartnerTransactions", newName: PaymentTransactions");

不正确:

RenameTable(name: "dbo.PartnerTransactions", newName: PaymentTransactions");
DropForeignKey("dbo.PartnerTransactions", "partnerID", "dbo.Partners");
等等!重命名应该在所有drop和old_table_name操作之后进行。有时EF是慢速的。

答案 1 :(得分:5)

This answer helped me and many others.如果仅删除__Migrations表不起作用,请尝试删除数据库中的所有表,并执行update-database -force

答案 2 :(得分:1)

删除Up方法和down方法中的代码。然后运行命令Update-database

    public override void Up()
    {
        //Delete the code
    }

    public override void Down()
    {
         //Delete the code
    }

然后它运行良好。

答案 3 :(得分:0)

您是否勾选了表格列表上需要在更新向导中添加的复选框 还要确保仔细检查多元化的单词。

答案 4 :(得分:0)

请检查您的迁移,例如,如果创建表abc时出错,请在迁移中检查迁移创建表的内容是什么?

我发现了我的问题,当我检查我的迁移时,迁移无法创建表。所以,我手动编辑创建表查看另一个迁移文件。并再次运行dotnet ef数据库更新,并解决了这个问题。

希望这有帮助。 谢谢

答案 5 :(得分:0)

这可能是一个黑客,可能不推荐。我有同样的问题但在我的情况下,我使用SQL服务器删除了我的表。当我尝试Update-Database时,我得到了同样的错误。我按照这些步骤,

  • 我刚刚设法在SQL服务器中重新创建一个表,该表具有相同的表名,并在错误消息中显示一些虚拟行。
  • 然后我在Visual Studio中再次Update-Database,并且更新成功。

希望这会有所帮助!