Je me rends compte que cela a été demandé à plusieurs reprises, mais je n'arrive tout simplement pas à comprendre le fond de ma question. Je reçois la pile d'erreur suivante:
Quand je réfléchis sur ma dll, je peux voir ce qui suit
Reading http://blogs.teamb.com/craigstuntz/2010/08/13/38628/ / suggère que je m'attendrais à voir les fichiers csdl, msl et ssdl ici, mais ce n'est pas le cas. Ils existent ici cependant obj\Debug\edmxResourcesToEmbed.
Néanmoins, j'ai essayé de dire explicitement à web.config où regarder en faisant ceci:
...connectionString="metadata=res://DllName.dll/PaymentModel.csdl|res://DllName.dll/PaymentModel.ssdl|res://DllName.dll/PaymentModel.msl;provider=System.Data.SqlClient;provider ... />
Ce qui jette juste une erreur en disant qu'il ne peut pas trouver la dll:
Impossible de résoudre l'assembly 'DllName.dll'.
Très similaire à cette question non résolue SO Impossible de résoudre Assembly Model.dll
La dernière chose que j'ai essayée était de changer la ligne de métadonnées en:
...connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider ... />
Cela a jeté un message sur sql ce que je n'utilise pas - y at-il un moyen de contourner ce problème ??
Y at-il autre chose que je peux essayer? Ou quelqu'un peut-il voir où je me trompe? Quelques détails supplémentaires:
Utilisation de EF 6 EDMX sur "Embedded Resource"
Copier dans le répertoire de sortie: "Ne pas copier"
Enfin, si je configure EDMX de Embedded Resource sur EntityDeploy, cela fonctionnera localement, mais pas sur le serveur de génération car il renvoie exactement la même erreur que cette question SO:
Mais le correctif ne semble pas aider et je ne peux malheureusement pas installer .NET 4.5 sur le serveur.
Donc je suis au fond de ceci, en partie je pense que c'était de ma faute. Je vais mettre des solutions à chaque problème que j'ai rencontré ci-dessous au cas où cela pourrait aider quelqu'un d'autre.
Impossible de charger le problème de ressource de métadonnées spécifié
Cela est dû au fait que j'ai défini le paramètre 'Traitement des artefacts de métadonnées' sur le modèle edmx de "EntityDeploy" à "Ressources incorporées".
Donc, cela signifiait qu'il intégrait tout le fichier edmx dans la dll sans générer les fichiers ssdl, msl et csdl.
Je suppose que vous devez définir ceci sur EntityDeploy pour que cela fonctionne et générer ces fichiers correctement. Cela fait sens et notre mal ici.
Impossible de résoudre l'assembly 'DllName.dll'
Andrew a résolu ce problème dans les commentaires ci-dessus, merci pour le pointeur à ce sujet.
Impossible de trouver le nœud de schéma conceptuel à incorporer en tant que ressource pour le fichier d'entrée
La clé de tout ce problème est vraiment ceci, notre serveur de build est actuellement sous Windows 2003, donc .NET 4.5 ne peut pas être installé, nous utilisions localement EF 6.1 sur un serveur .NET 4.0 sur VS2013.
Cependant, pour une raison quelconque, il semble que nous ayons besoin d'installer .NET 4.5 sur notre serveur de build pour pouvoir le faire, même si nous n'utilisons aucune des fonctionnalités 4.5 et ne ciblons pas le framework .NET 4.
Le déclassement de EF à 4.3 a résolu ce problème pour nous à court terme. Pas idéal mais cela a fonctionné.
J'ai eu le même problème . Après avoir déplacé le fichier .edmx avec le modèle EF pour séparer l'erreur mentionnée par l'assembly a causé mon mal de tête: "Impossible de charger la ressource de métadonnées spécifiée".
EF version 6.1
Solution:
Ancienne valeur:
metadata=res://*/Data.DataModel.csdl
Nouvelle valeur:
metadata=res://*/DataModel.csdl
Initialement, .edmx était dans le dossier du projet et je l’ai déplacé à la racine du projet.
vous devez spécifier le nom complet d'assembly et un chemin d'accès vers votre fichier de modèle (séparés par /
), et non le nom de la DLL
connectionString="metadata=res://Name.Of.The.Assembly, Culture=neutral, PublicKeyToken=8e2e51fcf4cf363e/Payment.PaymentModel.csdl|.........."
idem pour ssdl
et msl
Changer les metaData
connectionString="metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;
À
connectionString="metadata=res://*/;
Le changement ci-dessus résoudra le problème
Solution :
1) Ouvrez le fichier .edmx à partir de visual studio.
2) Cliquez n'importe où.
3) Devrait voir la fenêtre de propriété edmx.
4) Remplacez Namespace par le nom de dossier correct.
5) 1 : https://i.stack.imgur.com/6sZvo.png (sélectionnez l'image pour plus de détails).
J'avais le même problème
System.Data.MetadataException: impossible de charger la ressource de métadonnées spécifiée
Il s'est avéré que la chaîne de connexion générée plus tôt contenait le nom de edmx . J'ai extrait tous les noms de modèle de la chaîne de connexion, ne laissant que la chaîne ci-dessous dans mes métadonnées
"metadata=res://*/;provider=System.Data.SqlClient;provider
Cela a fonctionné pour moi.
dotnet
CLIPour les nouveaux visiteurs utilisant le nouvel outil dotnet build
pour construire des projets basés sur Entity Framework 6.x, sachez qu’il utilise actuellement n’intègre aucune métadonnée } dans la version finale. Ainsi, si vous exécutez à partir de VS, il s'exécutera, mais si vos scripts CI utilisent dotnet
, ils échoueront sur le serveur jusqu'à ce que vous reveniez à msbuild
. IMHO, c'est un bug et les outils devraient le gérer. Vous pouvez utiliser le thread GitHub si nécessaire.
J'ai effectivement reçu cette erreur identique parce que ma chaîne de connexion Entity Framework
pointait vers une base de donnéesvalide, mais qu'il s'agissait de la base de données incorrrect.
Si vous avez les instances suivantes dans SQL Server:
Assurez-vous que la chaîne de connexion pointe vers la base de données same à laquelle le .EDMX
est connecté et a été généré. Cela semble assez évident, mais lors de la copie des paramètres de connexion EF
d'un projet à un autre, cette erreur s'est produite et le résultat net est le message Unable to load the specified metadata resource
. Une fois que j'ai utilisé la chaîne de connexion correcte pointant vers la base de données correcte et l'assembly, l'erreur a été résolue.
Le plus simple est de prendre la chaîne original connection créée dans le fichier .config
situé à côté du .EDMX
et de la copier si nécessaire pour vous assurer que des omissions/erreurs mineures ou mineures ne sont pas commises, ce qui empêche EF
de ne pas se charger/se connecter correctement.
J'avais la même erreur. Ma chaîne de connexion était la suivante
<add name="EmployeeDbContext" connectionString="metadata=res://*/EmployeeModel.csdl|res://*/EmployeeModel.ssdl|res://*/EmployeeModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=Sample;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Je l'ai changé en suivant et il a résolu le problème
<add name="EmployeeDbContext" connectionString="server=.; database=Sample; integrated security=true;"
providerName="System.Data.SqlClient"/>
Notez également que lorsque vous déplacez le fichier edmx d’une application Web vers une couche de données (web.config - connection/app.config - connection), vous modifiez la chaîne de connexion dans la couche de données ET la couche de service Web (sinon on utilise deux chaînes de connexion différentes, et cela pose un tel problème)
J'ai utilisé EF6 dans mon studio visuel 2013. J'ai résolu ce problème en procédant comme suit.
ProviderManifestToken="2008"
J'espère que ça marche pour toi..
Je suis tombé sur ce problème et il m’a mordu à maintes reprises et j’oublie toujours comment je règle le problème.
Tout ce que je devais faire était de définir default.aspx comme page de démarrage.
Évidemment, cela n’aidera pas tout le monde, mais dans mon cas, j’ai pris le temps de vérifier ma configuration, ma chaîne de connexion ...
J'espère que cela aidera quelqu'un, ou du moins la prochaine fois que je le chercherai sur Google, je trouverai ma solution. :)
La chaîne de connexion "metadata = res" doit être identique au nom Edmx. par exemple
metadata=res://*/EmployeeModel.csdl
ce nom EDMX doit être EmployeeModel
Je veux partager mon expérience sur ce sujet et comment je l'ai résolu. Dans mon cas, cela se produit parce que je copier et coller ma chaîne de connexion sur serveur de production. Mon application utilisait Entity Framework _.
Le problème était sur les métadonnées
J'ai nommé mon modèle d'entité} sous le nom 'BetModel' mais sur ma chaîne de connexion, j'utilisais 'Entity' - 'res: // /Entity.csdl|res:// /Entity.ssdl | res: //*/Entity.msl 'sur' métadonnées '(parce que je l'ai copié-collé).
Donc, ma mauvaise ConnectionString était:
connectionString="metadata=res://*/Entity.csdl|res://*/Entity.ssdl|res://*/Entity.msl;provider=System.Data.SqlClient;provider connection string="data source=;initial catalog=;persist security info=True;user id=;password=;MultipleActiveResultSets=True;App=EntityFramework""
et le ConnectionString corrigé était:
<add name="BetEntities" connectionString="metadata=res://*/BetModel.csdl|res://*/BetModel.ssdl|res://*/BetModel.msl;provider=System.Data.SqlClient;provider connection string="data source=;initial catalog=;persist security info=True;user id=;password=;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Je partage mon code avec un autre développeur et il avait ce problème.Aucune différence de chaîne de connexion. Tous les fichiers sont corrects ...... Je l'ai corrigé en réglant
Cela a fonctionné, je suppose, car les fichiers individuels (fichiers CSDL/MSL/SSDL) ont été créés dans le répertoire de sortie lorsqu’il utilisait "copier dans le répertoire de sortie". Apparemment, il y avait un bug qui les nécessitait pour que la version intégrée fonctionne . J'espère que cela vous aidera :)
Je me suis heurté à ce problème plusieurs fois lorsque je passais d'une machine à une autre à la suite du retrait du code du contrôle de source. Il suffit généralement de reconstruire explicitement le projet avec le fichier EDMX.