"Das Objekt" dbo.xxxx "kann nicht gefunden werden, weil es nicht existiert oder Sie keine Berechtigungen haben.",

9

In meinen MVC-Web-Apps habe ich ein Modell namens Competencies zu den vorhandenen Modellen hinzugefügt und habe die Migration und Update-Datenbank hinzugefügt, es funktioniert gut und dann habe ich einen Controller basierend auf diesem Modell erstellt, es ist OK,

Aber nachdem ich festgestellt habe, dass etwas nicht in Ordnung ist, löschte ich den Controller und seine Ansichten mit dem Modell, lösche auch die Tabelle von Server Exploder und erstellte ein neues Modell namens CompetencyLabel, und führe add-migration aus, es funktioniert gut, aber wenn ich update-database ausführen, habe ich diesen Fehler in PM & gt; Fenster.

"Das Objekt" dbo.Competencies "kann nicht gefunden werden, weil es nicht existiert oder Sie keine Berechtigungen haben.",

diese Tabelle wurde gelöscht, ich weiß nicht, warum es mich immer noch fragt, weiß jemand, wie es funktioniert? vielen Dank,

    
user2949042 08.01.2014, 21:01
quelle

5 Antworten

10

Wenn Sie den Befehl Enable-Migrations eingeben, wird ein Ordner Migrations im Projekt erstellt. Immer wenn Sie Add-Migration angeben, wird in diesem Ordner eine neue Migrationsdatei erstellt. In der Datei sind zwei Methoden definiert:

  • Up() - definiert die Aktionen, die ausgeführt werden sollen, wenn wir die Datenbank mit Update-Database aktualisieren
  • Down() - Definiert Aktionen, die ausgeführt werden sollen, wenn wir die Datenbank mit Update-Database herabstufen.

Nachdem Sie das Kompetenzmodell gelöscht haben, hat die neueste Migration Code zur Methode Up() hinzugefügt, die Indizes für die Tabelle "Kompetenzen" zerstört und die Tabelle verwirft. Wie Sie es manuell getan haben, entfernen Sie einfach den dafür verantwortlichen Code und Update-Database . Es sollte es ohne Probleme aktualisieren.

    
krzychu 17.02.2014 15:03
quelle
3

Wenn Sie diesen Fehler erhalten, versuchen Sie, Ihre Up() -Anweisungen in der richtigen Reihenfolge anzuordnen. Beispielsweise,

Wenn Sie sich das Bild oben ansehen, erkennen Sie, dass die Tabelle Users am Anfang umbenannt wird und in der nächsten Zeile eine SQL-Anweisung generiert wird, um einen Fremdschlüssel in der Tabelle Users , aber in Entity zu löschen Framework, diese Tabelle (das ist die Users -Tabelle) existiert nicht mehr, so wird es einen Fehler werfen.

Ordnen Sie die Anweisungen neu an, damit die Tabelle Users nicht umbenannt wird. Ein Beispiel ist in dem Bild unten zu sehen.

    
Alf Moh 06.04.2017 13:54
quelle
2

Ich habe eine andere Antwort für dieses Problem gefunden.

Mein Szenario war, dass ich Änderungen an meinen Entitäten vorgenommen habe (Ändern von Relationen und Angeben von Namen). Als ich die update-database -verbose ausführte, stellte ich fest, dass einige Funktionen mit "EntityHistory" ausgeführt wurden, aber diese Entität existierte nicht mehr, weil ich den Namen in "AnotherEntityHistory" geändert habe. Als Ergebnis bekomme ich dann das " Kann das Objekt nicht finden" dbo.EntityHistory ", weil es nicht existiert oder Sie keine Berechtigungen haben ".

Was ich getan habe, war, die AnotherEntityHistory wieder in EntityHistory umzubenennen, die Update-Datenbank auszuführen (alles wird in Ordnung sein, weil es nun die fehlende Entity EntityHistory hat), die EntityHistory in AnotherEntityHistory umbenennen und die Update-Datenbank erneut ausführen / p>

Sie werden sehen, dass es jetzt nur die Tabelle umbenennen muss, anstatt Tabellen umzubenennen, Indizes zu löschen, etc ....

Auf diese Weise müssen Sie keine Tabelle oder die Migrationswerte entfernen.

    
EduLopez 30.07.2015 13:57
quelle
2

Da Sie den Inhalt der Datenbank manuell gelöscht haben, nachdem Sie Add-Migration angewendet haben, und bevor Sie Update-Database ausführen ( Ich schätze, Fehler wird hier erzeugt )

  • Löschen Sie die entsprechende Migrationsdatei aus dem Migrationsordner, da sie nicht korrekt angewendet wird Die vorherige Migration mithilfe von Update-Database –TargetMigration: OldMigration zurücksetzen oder die generierte Datenbank löschen oder den alten Migrationsdatensatz aus der Datenbanktabelle löschen
  • Wenden Sie die Migration Add-Migration von der ersten Migration des NPM-Codes an
  • an
  • Führen Sie das Datenbank-Update von Add-Migration command
  • aus

Dies löst Ihr Problem.

    
Jax Bikeio 28.02.2016 21:20
quelle
1

Entfernen Sie alle Migrationsklassen, die Sie manuell im Migrationsordner hinzugefügt haben (durch den Befehl "add-migration"), und geben Sie den folgenden Befehl ein: add-migration MigrationName -ProjectName YourProjectName

Wenn alles gut funktioniert, sollten Sie den folgenden Code in der Up-Methode der neu erstellten Migrationsklasse sehen

DropTable("dbo.Competencies"); CreateTable("dbo.CompetencyLabel");

Führen Sie dann diesen Befehl update-database -verbose -ProjectName YourProjectName

aus

fröhliche Codierung

    
Code_Worm 15.07.2016 15:32
quelle

Tags und Links