734 Stimmen

MetadataException: Die angegebene Metadaten-Ressource kann nicht geladen werden

Plötzlich bekomme ich immer wieder eine MetadataException bei der Instanziierung meiner generierten ObjectContext Klasse. Die Verbindungszeichenfolge in App.Config sieht korrekt aus - hat sich nicht geändert, seit es das letzte Mal funktionierte - und ich habe versucht, ein neues Modell (edmx-Datei) aus der zugrunde liegenden Datenbank zu regenerieren, ohne dass sich etwas geändert hat.

Hat jemand eine Idee?

Weitere Einzelheiten: Ich habe keine Eigenschaften geändert, ich habe den Namen der Ausgabebaugruppen nicht geändert, ich habe nicht versucht, das EDMX in die Baugruppe einzubetten. Ich habe lediglich 10 Stunden gewartet, vom Verlassen der Arbeit bis ich zurückkam. Und dann hat es nicht mehr funktioniert.

Ich habe versucht, das EDMX neu zu erstellen. Ich habe versucht, das Projekt neu zu erstellen. Ich habe sogar versucht, die Datenbank von Grund auf neu zu erstellen. Kein Glück, was auch immer.

17 Stimmen

Wenn eine Frage SO zu einem bestimmten Produkt mehr als 200k Aufrufe hat, dann funktioniert das Produkt nicht so, wie die Nutzer es erwarten. Ich würde mir wünschen, dass Microsoft sich dieses Problems annimmt. Hier ist ein Link, über den Sie ihnen Vorschläge machen können, wenn Sie Zeit haben: visualstudio.uservoice.com/forums/121579-visual-studio .

1 Stimmen

Mein Problem gelöst, durch Ersetzen der Verbindung-Zeichenfolge aus db-Layer-Projekt kopiert.

0 Stimmen

Ich habe auch dieses Problem, ich nur sauber und neu erstellen Lösung, die gut funktioniert.

18voto

Ghlouw Punkte 1430

Ich hatte auch dieses Problem und es war, weil die connectionstring in meinem web.config war etwas anders als die in der app.config der Baugruppe, wo meine EDMX befindet sich. Keine Ahnung, warum es geändert, aber hier sind die beiden verschiedenen Versionen.

App.config:

<add name="SCMSEntities" connectionString="metadata=res://*/Model.SMCSModel.csdl|res://*/Model.SMCSModel.ssdl|res://*/Model.SMCSModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SANDIEGO\sql2008;initial catalog=SCMS;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Web.config:

<add name="SCMSEntities" connectionString="metadata=res://*/Model.SCMSModel.csdl|res://*/Model.SCMSModel.ssdl|res://*/Model.SCMSModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SANDIEGO\sql2008;initial catalog=SCMS;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Das Problem wurde durch einfaches Kopieren der app.config-Zeichenfolge behoben (beachten Sie den kleinen Unterschied am Ende - anstelle von " App=EntityFramework " er wollte " application name=EntityFramework ") in die web.config und das Problem war gelöst :)

1 Stimmen

Danke, das war tatsächlich mein Problem. Ich hatte 1 Projekt, das DB mit EF und ein anderes Projekt WCF zugreifen. Nachdem ich den Namen des ersten Projekts geändert habe, wurde der connectionString in der App.config meines ersten Projekts geändert. Also musste ich die connectionString im Projekt WCF sowie in der web.config ändern :)

0 Stimmen

Aus der MSDN-Dokumentation über learn.microsoft.com/de-us/dotnet/framework/data/adonet/ : The .NET Framework data provider for SQL Server (SqlClient) supports many keywords from older APIs, but is generally more flexible and accepts synonyms for many of the common connection string keywords. Entity Framework-Verbindungszeichenfolgen bieten diese Flexibilität nicht, so dass Sie nur die Schlüsselwörter verwenden müssen, die es erwartet.

18voto

Liakat Hossain Punkte 1076

Das passiert mir, wenn ich die Lösung nicht bereinige, bevor ich einen neuen .edmx Designer erstelle. Vergessen Sie also nicht, die Lösung zu säubern, bevor Sie einen neuen .edmx-Designer erstellen. Dies hilft mir, viele weitere Probleme mit diesem zu überspringen. Unten die Navigation Details zur Verfügung gestellt incase Sie sind neu in Visual Studio.

Klicken->Erstellen->Lösung reinigen

Dann klicken Sie auf->Erstellen->Lösung neu erstellen

Ich hoffe, das hilft. Danke an alle

16voto

hgcummings Punkte 983

Das ist mir passiert, als ich versehentlich die Build-Aktion der edmx-Datei (erscheint unter Eigenschaften in der IDE) von "EntityDeploy" auf "None" geändert habe. EntityDeploy füllt die Metadaten für Sie auf: siehe http://msdn.microsoft.com/en-us/library/cc982037.aspx

0 Stimmen

Dies war mein Fix - ich umbenannt meine edmx zu .old, wie ich es kopiert und war ein paar Dinge ausprobieren, danach, wenn ich es zurück umbenannt die Build-Aktion setzen Sie selbst auf keine und so bekam diesen Fehler, es zurück zu EntityDeploy behoben mein Problem :)

0 Stimmen

Ich hatte meine EDMX-Datei in einen anderen Ordner verschoben und musste die Build-Aktion ändern, damit die Namen der eingebetteten Ressourcen ebenfalls aktualisiert wurden. Danke!

0 Stimmen

Dies war die Lösung für mich; ich hatte diese Einstellung bei der Aktualisierung auf .NET Standard verloren. Danke, dass Sie meinen Verstand gerettet haben!

12voto

MOH3N Punkte 845

Manchmal sehe ich diesen Fehler in meinem Projekt. Ich löse das durch

1 - Rechtsklick auf die EDMX-Datei

2 - Auswählen Run Custom Tool Option

3 - Umbauprojekt

2 Stimmen

Das hat bei mir funktioniert, aber ich musste danach auch wieder neu aufbauen.

10voto

Graham Laight Punkte 4338

Wenn Sie das edmx aus einem anderen Projekt verwenden, dann ändern Sie in der Verbindungszeichenfolge...

metadata=res://*/Data.DataModel.csdl

...zu...

metadata=res://*/DataModel.csdl

0 Stimmen

Das ist richtig. Wenn Sie es in Ihren neuen Projektunterordner verschieben wollen, müssen Sie die folder.subfolder vor ihm.

0 Stimmen

Danke, diese Lösung hat bei mir funktioniert. Ich hatte meine .edmx-Datei aus einem Verzeichnis in einem Projekt in das Stammverzeichnis eines anderen Projekts verschoben und musste den Verzeichnisnamen aus allen Verbindungszeichenfolgen in meiner Lösung entfernen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X