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

本文关键字:或者 权限 不存在 因为 对象 dbo 找不到 | 更新日期: 2023-09-27 18:00:29

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

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

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

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

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

不正确:

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

等等!重命名应该在所有删除和old_table_name操作之后进行。有时EF是个慢动作。

这个答案帮助了我和许多其他人。如果只删除__Migrations-table不起作用,请尝试删除数据库中的所有表,并更新数据库-强制

删除Up方法和down方法中的代码。然后运行命令"更新数据库"

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

然后它就完美地工作了。

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

请检查您的迁移,例如,如果在创建表abc时出现错误,请检查迁移中有没有创建表?

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

希望这能有所帮助。感谢

这可能是一次黑客攻击,不推荐使用。我也遇到了同样的问题,但在我的情况下,我使用SQL server删除了我的表。当我尝试执行Update-Database时,我也遇到了同样的错误。我遵循了这些步骤,

  • 我只是设法在SQL server中重新创建了一个表,该表的名称与错误消息中显示的具有一些伪行的表名称相同
  • 然后我又在Visual Studio中执行了Update-Database,更新成功了

希望这会有所帮助!

在我的例子中,我使用table属性为模型实体中的表名定义了模式。因此,解决方案是在自动生成的迁移中指定表模式。

migrationBuilder.DropTable(
    name: "TableName",
    schema: "MyCustomSchema"
);
相关文章: