EF CodeFirst: Entweder ist der Parameter @objname mehrdeutig oder der beanspruchte @objtype (COLUMN) ist falsch
Ich habe eine Tabelle mit dem Namen EducationTypes
und eine Entität namens EducationType
ich umbenannt, einer Entität-Eigenschaften, jetzt bin ich Häufig immer Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong
. Wie kann ich dieses Problem lösen?
Das generierte SQL-Skript:
EXECUTE sp_rename @objname = N'dbo.EducationTypes.nvarchar', @newname = N'EducationTypeTitle', @objtype = N'COLUMN'
InformationsquelleAutor der Frage saber | 2013-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Code First und haben (ein) bestehende Migration-Skript(N) und versuchen, Sie zu überschreiben, zu ändern (z.B. umbenennen einer Spalte), der inzwischen gelöscht wurde, dann erhalten Sie diesen Fehler ausgegeben. Einfachste Möglichkeit ist das löschen der Migrations-Skripts, Add-Migration über NuGet, und dann aktualisieren Sie die Datenbank.
InformationsquelleAutor der Antwort RizJa
Dies ist, weil der Konflikts Namen der Klasse (Modell) Namen mit anderen vorbehalten oder generierte, wenn der auto erstellt die Tabellen und ... .
Wenn man bedenkt, dass EF Code First erstellt das eingreifen Tabellen beziehen sich 2 oder mehr Tabellen mit den Namen der Tabellen für die abgeleiteten eingreifen Tisch, so, wenn Sie der name einer Klasse mit einem Namen wie das eingreifen Tabellen, wir werden bekommen, wie diese mehrdeutige Fehler.
Zum Beispiel, wenn Sie eine Frage Klasse, die hat eine Antwort navigation Eigenschaft das interne Modell die Metadaten enthalten einen Verweis aufgerufen QUESTION_ANSWER
Um dieses Problem zu lösenversuchen, ändern Sie den Klassennamen (zum generieren von Tabellen) und sorgen für Ihre Einzigartigkeit.
InformationsquelleAutor der Antwort Amirhossein Mehrvarzi
Verbrachte viel zu viel Zeit damit, herauszufinden, warum dies geschah auf einer Produktions-Datenbank kann ich nur Zugang über mylittlesql. Konnte das problem nicht reproduzieren, sondern gemacht dieses Skript von bits von sp_rename, damit, wenn es geschieht nächste mal kann ich genau herausfinden, warum. Ja ist übertrieben, aber es könnte helfen, jemand anderes.
Gibt es ein Problem, wenn Sie immer irgendwie zu verwalten, um '[' oder ']' in die Spalte name gespeichert ist, die in sys.Spalten, (? 'nvarchar', da die Spalte name ???? ). PARSENAME nicht gewachsen ist []'s und gibt null zurück, so sp_rename wird nicht funktionieren.
Dies wird nur helfen, zu bestimmen, das Problem mit dem 'Spalte' Fall mit dem Fehler-code 15248 das ist, wo ich immer wieder dieses Problem:
Dieser Ausgabe einige hilfreiche Meldungen in der Registerkarte Meldungen (SSMS oder was auch immer Sie verwenden) und die Felder der Tabelle in der Registerkarte Ergebnisse.
Glück.
InformationsquelleAutor der Antwort MDWeb
Habe ich diese mit Entity Framework 6 wenn Sie versuchen, benennen Sie einen Fremdschlüssel in meinen Migrationen Skript mithilfe von Sql (" ... " ) - Methode. Der workaround den ich hatte, war die Verwendung von eckigen Klammern um den Namen:
d.h. ändern:
...:
SQL-Server ist dann in der Lage zu finden, die den Fremdschlüssel.
InformationsquelleAutor der Antwort garryp
Eigentlich dieser Fehler auch passiert, wenn Sie gerade gelöscht haben, die Datenbank und Ihr Kontext nicht bewusst, dass Ihre Datenbank ist nicht da.
Ich neu erstellt die Datenbank, und jetzt ist der Fehler behoben wurde.
P. S. achten Sie darauf, dass die Datenbank noch da ist, wenn Sie versuchen, führen Sie die update-Datenbank
InformationsquelleAutor der Antwort radu florescu
Ich hatte gerade das gleiche Problem, auch nach der Umgestaltung. Für mich war das problem verursacht, indem Sie einer migration wurde umgestaltet werden, wie gut.
Das Ergebnis war, dass eine weitere migration konnte nicht durchgeführt werden, weil dieser migration war auf der Suche nach einer Tabelle suchen, die es seinen alten Namen.
Rückgängigmachen der änderungen in der migration, hat dieses Problem gelöst.
InformationsquelleAutor der Antwort Br2