29 votes

Quelqu'un peut-il comprendre pourquoi je continue de recevoir cette erreur en testant la version bêta de l'EF 5

Installé visual studio 11 beta que je voulais tester EF 5 bêta, mais continuez à frapper ce une erreur.

La méthode non trouvé: 'Void Système.Les données.Objets.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)'.

Le projet est un nouveau MVC3 application et ci-dessous est un code qui illustrent la façon dont l'erreur se produit.

public class Blog
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class EFDbContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
}

public class HomeController : Controller
{
    protected EFDbContext Db = new EFDbContext();

    public ActionResult Index()
    {
        Blog B = new Blog();
        B.Name = "Test";            
        Db.Blogs.Add(B);
        Db.SaveChanges();
        return View();
    }
}

Cherché l'erreur sur google, mais rien n'est venu et je ne suis pas sûr que l'erreur fait référence. J'ai ajouté un extrait de la stacktrace ci-dessous dans le cas de l'aide.

[MissingMethodException: Méthode non trouvé: 'Void Système.Les données.Objets.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)'.] Système.Les données.De l'entité.Interne.LazyInternalContext.InitializeContext() +0 Système.Les données.De l'entité.Interne.InternalContext.Initialize() +31
Système.Les données.De l'entité.Interne.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +39
Système.Les données.De l'entité.Interne.Linq.InternalSet1.Initialize() +1371.get_InternalContext() +38 Système.Les données.De l'entité.Interne.Linq.InternalSet
1.Add(Object entity) +200 Système.Les données.De l'entité.DbSet`1.Ajouter(TEntity entité) +72

59voto

Arthur Vickers Points 4894

On dirait que vous êtes à l'aide de la EF5 EntityFramework.dll mais alors courir avec .NET 4 installé à la place de .NET 4.5.

Si vous avez l'intention de la cible .NET 4.5, alors assurez-vous que .NET 4.5 est installé sur l'ordinateur sur lequel vous exécutez le code. VS11 installe .NET 4.5 pour vous, mais vous pouvez également installer le moteur d'exécution sur un non-dev machine.

Si vous avez l'intention de la cible .NET 4, alors assurez-vous que votre projet est défini de cible .NET 4 désinstallez et réinstallez le EF5 package NuGet. Vous devez désinstaller et réinstaller parce que NuGet ne va pas changer l'assemblée utiliser automatiquement lorsque le projet est re-taregted.

Mise à jour:

Vous pouvez également voir cette exception si vous avez encore de la fe juin CTP installé ou si elle a échoué pour désinstaller correctement. S'il vous plaît essayez de désinstaller la version CTP de juin entièrement avant d'installer VS11. Si vous voyez toujours des problèmes de leur ouvrir un "Développeur Invite de Commande" en tant qu'Administrateur et exécutez:

gacutil /u System.Data.Entity,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089

Si cela ne fonctionne toujours pas, alors vous pouvez essayer de forcer la désinstallation à partir du GAC avec:

gacutil /uf System.Data.Entity,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089

5voto

ddd Points 51

Assurez-vous que .net 4.5 est installé sur votre système cible. J'ai eu le même message, il s'est avéré que je n'avais pas installé .net 4.5 sur l'un de mes serveurs de ferme.

0voto

aggaton Points 183

Si vous avez du mal à vous débarrasser de la 4.2 System.Data.Entity du GAC comme je l'ai fait, où il se plaignait que le programme d'installation en dépendait,

 G:\Program Files (x86)\Microsoft Visual Studio 2012 Ultimate\VC>gacutil /uf System.Data.Entity,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.17929
Copyright (c) Microsoft Corporation.  All rights reserved.


Assembly: System.Data.Entity, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b
77a5c561934e089, processorArchitecture=MSIL
Assembly could not be uninstalled because it is required by Windows Installer
Number of assemblies uninstalled = 0
Number of failures = 0
 

vous pouvez vous débarrasser des clés du registre à partir de ce dossier:

 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Assemblies\Global
 

et réexécutez la commande gacutil / uf

0voto

rsantos Points 90

J'ai résolu ce problème en supprimant la stratégie:

C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ policy.4.0.system.data.entity \ v4.0_0.0.0.0__b77a5c561934e089 \ policy.4.0.system.data.entity.config

Qui avait ces informations: ... bindingRedirect oldVersion = "4.0.0.0" newVersion = "4.2.0.0" ...

J'espère que cela aide Rui

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X