web-dev-qa-db-de.com

System.Data.MetadataException: Die angegebene Metadatenressource kann nicht geladen werden

Meine Verbindungszeichenfolgen lauten wie folgt:

<add name="RollCallDBEntities" connectionString="metadata=res://System.Engine/RollcallNS.csdl|res://System.Engine/RollcallNS.ssdl|res://System.Engine/RollcallNS.msl;provider=Devart.Data.Oracle;provider connection string=&quot;User Id=user;Password=password;Server=127.0.0.1;Direct=True;Sid=ORCL&quot;" providerName="System.Data.EntityClient" />

mein Code lautet wie folgt:

using (var db= new RollCallDBEntities()) //ok
{
   var query = db.TBL_ROLLCALL.ToList(); //Unable to load the specified metadata resource.
}

meine Versammlung:

System.Engine

Hat jemand Ideen?

diese Links haben mein Problem nicht gelöst:
MetadataException: Die angegebene Metadatenressource kann nicht geladen werden.
entity framework Die angegebene Metadatenressource kann nicht geladen werden.
Entity Framework: Die angegebene Metadatenressource kann nicht geladen werden.
Die angegebene Metadatenressource kann nicht geladen werden.

20
Meysam Savameri

Siehe http://forums.devart.com/viewtopic.php?t=22092 .

Wenn dies nicht hilft, geben Sie bitte Folgendes an:

  • arbeiten Sie mit ADO.NET Entity Data Model (.edmx) oder Devart Entity Model (.edml)?
  • der Wert der Build Action-Eigenschaft Ihrer Modelldatei
  • der Wert der Metadata Artifact Processing-Eigenschaft Ihres Modells
  • die Build-Nummer (x.xx.xxx) Ihres dotConnect für Oracle
  • die Version Ihres Visual Studio
  • befolgen Sie die Anweisungen von Pawel, um zu prüfen, ob Ressourcen in die Assembly eingebettet wurden
5
Devart

Ich bekam eine Ausnahme wie diese. Das Problem war, dass ich meine .edmx-Datei umbenannt und vergessen habe, den Namen in der Verbindungszeichenfolge der EF Web.config-Datei zu ändern:

metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;
57

Die einfachste Lösung, die dieses Problem gelöst hat, war Entfernen des Obj-Ordners, die sich auf derselben Ebene wie der Bin-Ordner befinden, und Anwendung erneut ausführen, mein Gott, es dauerte viel länger als es brauchte

5
AltF4_

Ich habe EntityFramework 6.0 in einer Lösung verwendet, die mehrere Projekte enthielt, z. B. ein Projekt auf WebSite-Ebene oder ein Projekt auf DataAccess-Ebene. In meiner Lösung sollten die Migrationen im DataAccess-Projekt durchgeführt werden.

Wenn ich den Befehl "Add-Migration" in der Package Manager Console ausführte, wurde "Die angegebene Metadatenressource kann nicht geladen werden" angezeigt.

Schließlich habe ich festgestellt, dass ich das WebSite-Level-Projekt als "Startup" -Projekt und diesen Auslöser über der Ausnahme festgelegt habe. Es scheint, dass das System zuerst die Einstellungen der Verbindungszeichenfolge im StartUp-Projekt automatisch überprüft. Und meine Datenverbindungszeichenfolge, die im Projekt auf WebSite-Ebene festgelegt ist, lautet 

"metadata = res: // /ApplicationEntities.csdl | res:// / ApplicationEntities.ssdl | res: //*/ApplicationEntities.msl; provider = System.Data.SqlClient; Datenquelle des Provider Connection String =" = .; initial catalog = YourDatabaseName; integrierte Sicherheit = True; MultipleActiveResultSets = True; App = EntityFramework "" 

was für den Code nicht richtig ist.

Die richtige Verbindungszeichenfolge sollte lauten:

"Datenquelle = .; Anfangskatalog = YourDatabaseName; Integrated Security = True" 

Fazit: Überprüfen Sie immer zuerst den Abschnitt "connectionStrings" in web.config im Projekt "StartUp" der Lösung.

2
ChinaHelloWorld

Ich hatte ein ähnliches Produkt mit devart mysqlconnect - vielleicht könnte dies helfen.

Ich habe ein Projekt namens EFModels, das die .edml-Datei enthält und von anderen Projekten referenziert wird.

Ich habe festgestellt, dass die Release-Version eines Projekts, das auf EFModels verwiesen hat, EFModels.dll enthält, jedoch in seiner Größe (127 kb vs. 437 kb) viel kleiner war als die Debug-Version von EfModels.dll. Das Verschieben der EFModels.dll aus der Debug-Version in die Release-Version löste das Problem für mich, da aus irgendeinem Grund die Release-Version die Ssdl-Datei nicht eingebettet hatte.

0
Watson

Dieses Problem ist auch aufgetreten, weil ich vergessen habe, auf das Projekt zu verweisen, das die EDMX-Datei enthielt.

0
maria

Dieses Problem ist auch aufgetreten, weil ich von Entity Framework Model First zu Entity Framework Code First ging und vergessen hatte, den EDMX-Verbindungsstring in einen "normalen" Verbindungsstring zu ändern.

0

Wenn Sie sich nicht sicher sind, wie der richtige Pfad für Ihre Metadatendateien lautet, können Sie dies herausfinden, indem Sie Ihre Anwendung kompilieren und dann das DLL mit JetBrains 'dotPeek öffnen und im Ordner Resources nach der Datei .csdl usw. suchen .

0
philu