web-dev-qa-db-fra.com

Erreur EntityFramework: le fournisseur n'a pas renvoyé d'instance ProviderManifest

Mon projet utilise ASP.NET MVC4, en C # avec Visual Studio 2012 pour Web Express.

Lors de la compilation de mon projet, j'ai l'erreur suivante:

Le fournisseur n'a pas renvoyé d'instance ProviderManifest. Impossible de déterminer la version de stockage. une connexion de stockage valide ou un indice de version est requis. 

Après de nombreuses heures de recherche, je pense que cette erreur est en quelque sorte liée à Entity Framework. J'ai également trouvé un moyen de contourner cette erreur ici: http://forums.devart.com/viewtopic.php?f=32&t=25748

La solution de contournement suggère que je modifie le champ ProviderManifestToken="2012" en ProviderManifestToken="2008" dans mon fichier .edmx

Après cela, l'erreur disparaît. Mais j’ai un autre problème quand j’exécute le projet, une erreur d’exécution:

Impossible de charger le fichier ou l'assembly 'Microsoft.Data.Edm' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)

=== Informations d'état préalables à la liaison ===
LOG: DisplayName = Microsoft.Data.Edm
(Partiel)
WRN: Des informations de liaison partielles ont été fournies pour une assemblée:
WRN: Nom de l'assembly: Microsoft.Data.Edm | ID de domaine: 2
WRN: une liaison partielle se produit lorsqu'une partie seulement du nom d'affichage de l'assembly est fournie.
WRN: le classeur pourrait charger un assemblage incorrect.
WRN: Il est recommandé de fournir une identité textuelle entièrement spécifiée à l’Assemblée,
WRN: il s'agit du nom simple, de la version, de la culture et du jeton de clé publique.
WRN: voir le livre blanc http://go.Microsoft.com/fwlink/?LinkId=109270 pour plus d'informations et des solutions communes à ce problème.
LOG: Appbase = fichier: /// C:/Utilisateurs/Pedro/Documents/Visual Studio 2012/Projets/Dockis/Développement/Dockis/Dockis /
LOG: Initial PrivatePath = C:\Utilisateurs\Pedro\Documents\Visual Studio 2012\Projets\Dockis\Development\Dockis\Dockis\bin
Assemblée appelante: (Inconnu). 

LOG: Cette liaison commence dans le contexte de chargement par défaut.
LOG: Utilisation du fichier de configuration de l'application: C:\Utilisateurs\Pedro\Documents\Visual Studio 2012\Projets\Dockis\Development\Dockis\Dockis\web.config
LOG: Utilisation du fichier de configuration de l'hôte: C:\Utilisateurs\Pedro\Documents\IISExpress\config\aspnet.config
LOG: Utilisation du fichier de configuration de la machine à partir de C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 

LOG: La stratégie n'est pas appliquée à la référence pour le moment (liaison Assembly privée, personnalisée, partielle ou localisée).
LOG: tentative de téléchargement du nouveau fichier URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm.DLL.
LOG: tentative de téléchargement du nouveau fichier URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm/Microsoft.Data.Edm .DLL.
LOG: tentative de téléchargement du nouveau fichier URL: /// C:/Utilisateurs/Pedro/Documents/Visual Studio 2012/Projets/Dockis/Développement/Dockis/Dockis/bin/Microsoft.Data.Edm.DLL.
LOG: Utilisation du fichier de configuration de l'application: C:\Utilisateurs\Pedro\Documents\Visual Studio 2012\Projets\Dockis\Development\Dockis\Dockis\web.config
LOG: Utilisation du fichier de configuration de l'hôte: C:\Utilisateurs\Pedro\Documents\IISExpress\config\aspnet.config
LOG: Utilisation du fichier de configuration de la machine à partir de C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect trouvé dans le fichier de configuration de l'application: 5.6.0.0 redirigé vers 5.6.1.0.
LOG: Référence post-stratégie: Microsoft.Data.Edm, version = 5.6.1.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35
LOG: tentative de téléchargement du nouveau fichier URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm.DLL.
LOG: tentative de téléchargement du nouveau fichier URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm/Microsoft.Data.Edm .DLL.
LOG: tentative de téléchargement du nouveau fichier URL: /// C:/Utilisateurs/Pedro/Documents/Visual Studio 2012/Projets/Dockis/Développement/Dockis/Dockis/bin/Microsoft.Data.Edm.DLL.
WRN: la comparaison du nom de l'assembly a entraîné l'incompatibilité: Numéro de version
ERR: Impossible de terminer la configuration de l'assembly (hr = 0x80131040). Sondage terminé.

Trace de la pile:

[FileLoadException: Could not load file or Assembly 'Microsoft.Data.Edm' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or Assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
   System.Reflection.Assembly.Load(String assemblyString) +28
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or Assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
   System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +521

[HttpException (0x80004005): Could not load file or Assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9950728
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Dockis est le nom du projet. Après avoir constaté cette erreur, j'ai passé plusieurs heures à croire que ces erreurs se situaient quelque part dans les versions du paquet utilisé. Cependant, cela ne semble pas être le cas, car la majorité des packages sont à jour et il ne semble pas y avoir de conflit entre eux. 

Par conséquent, je suis de nouveau convaincu que le problème réside dans la version d'EntityFramework, mais je suis à court d'idées sur la façon de résoudre ce problème.

Je suis tout ouïe, si vous avez des suggestions, je les apprécierai.

16
Flame_Phoenix

Apparemment, le problème était la version de Visual Studio que j'utilisais. C'est époustouflant si vous me le demandez. Après avoir supprimé Visual Studio Web Express 2012 et installé Visual Studio 2013 Ultimate, tout a commencé à fonctionner correctement. 

7
Flame_Phoenix

Téléchargez http://www.Microsoft.com/en-us/download/details.aspx?id=40762 et mettez à jour Nuget EF vers la version 6.1.3.

14
suhyura

Remplacer 2012 par 2008 dans ProviderManifestToken="2012" dans le fichier .edmx a fonctionné pour moi. 

  1. Remplacer 2012 par 2008 dans ProviderManifestToken="2012"
  2. Enregistrez le fichier .edmx 
  3. Nettoyer et reconstruire la solution
3
Kapil Rattan

Cela se produit car VS2012 ne prend pas en charge SQL 2012 et les versions ultérieures . Modifiez la valeur de ProviderManifestToken en 2008.

2
Viktor Popov

Cela a fonctionné pour moi sans modifier ProviderManifestToken = "2012" en 2008 dans le fichier .edmx.

dans le fichier .edmx, j'ai changé la valeur suivante de True à False. 

<edmx:DesignerProperty Name="UseLegacyProvider" Value="False" /> 

"Le fournisseur n'a pas renvoyé d'instance ProviderManifest." l'erreur est partie. 

2
Brian Robison

Pas sûr que ce soit un problème de Visual studio. Ou tout simplement le cadre de l'entité incapable de reconnaître correctement le manifeste du fournisseur . Je me suis débarrassé de l'erreur en modifiant le fichier edmx et en remplaçant 2012 par 2008 dans le <Schema ProviderManifestToken="2008" ...>.

1

Pour moi, c’est parce que lorsque j’ai utilisé TeamCity pour déployer mon site, le fichier web.config a été modifié.

Il a supprimé le connectionString et ajouté debug = true à la compilation System.Web

<system.web>
    <customErrors mode="Off" />
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576" />
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
  </system.web>

J'ai corrigé manuellement le fichier web.config, qui fonctionne à nouveau pour moi.

0
Morten Hausted
  1. allez là où se trouve votre projet (ouvrez l'Explorateur de solutions. rightcliquez sur la solution et cliquez sur "Ouvrir le dossier dans l'explorateur de fichiers"
  2. ouvrez le fichier EDMX avec le bloc-notes et changez ProviderManifestToken = "2012" à ProviderManifestToken = "2008". enregistrer il

  3. construire votre solution

0
Saeed Az