29

Visual Studio 11 beta voluto per testare EF 5 beta, ma continua a colpire questo errore.Qualcuno può capire perché continuo a ricevere questo errore testando la EF 5 beta

metodo non trovato: 'Vuoto System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior (booleano)'.

Project è una nuova applicazione MVC3 vuoto e sotto è un codice che illustrano come l'errore si verifica.

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(); 
    } 
} 

Cerca l'errore su google ma non è venuto fuori nulla e non sono abbastanza sicuro di quale errore si riferisca a. Ho aggiunto uno snippet dello stacktrace di seguito nel caso in cui possa essere d'aiuto.

[MissingMethodException: Metodo non trovato: 'Vuoto System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior (booleano)'.] System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +0 sistema. Data.Entity.Internal.InternalContext.Initialize() +31
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (tipo entityType) +39
System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +137
System.Data.Entity.Internal.Linq.InternalSet
1.get_InternalContext() +38 System.Data.Entity.Internal.Linq.InternalSet 1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +236
System.Data.Entity.Internal.Linq.InternalSet
1.Add (entità Object) +200 System.Data.Entity.DbSet`1.Add (entità TEntity) +72

risposta

60

Sembra che si sta utilizzando l'EF5 EntityFramework.dll ma poi correre con .NET 4 installato invece di .NET 4.5.

Se si intende utilizzare .NET 4.5, assicurarsi che .NET 4.5 sia installato sulla macchina su cui si sta eseguendo il codice. VS11 installa .NET 4.5 per te, ma puoi anche installare solo il runtime su una macchina non-dev.

Se si intende utilizzare .NET 4, assicurarsi che il progetto sia impostato su .NET 4 di destinazione, quindi disinstallare e reinstallare il pacchetto NuGet EF5. È necessario disinstallare e reinstallare in quanto NuGet non modificherà automaticamente l'assembly in uso quando il progetto viene riaggiustato.

Aggiornamento:

Si può anche vedere questa eccezione se avete ancora la EF giugno CTP installato o se non è riuscito a disinstallare correttamente. Si prega di provare a disinstallare completamente il CTP di giugno prima di installare VS11. Se si vede ancora problemi li aprire una "Prompt dei comandi developer" come amministratore ed eseguire:

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

Se questo non funziona ancora, allora si può tentare di forzare la disinstallazione dal GAC con:

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

Apprezzo la risposta. Comunque ho installato .Net 4.5 e il mio progetto ha come obiettivo anche il framework .net 4.5. Stavo tentando di eseguire EF 5.0 beta in VS 11 Ultimate Beta con il framework .Net 4.5 Beta. Proverò a disinstallare VS11 e .Net 4.5 framework e ricominciare da capo. – Drauka

+0

Disinstallato vs11 beta e il framework 4.5 e reinstallato vs11 beta compreso 4,5 .... Il problema persiste e sto ricevendo lo stesso errore. – Drauka

+0

Riesci a trovare la versione del file System.Data.Entity.dll nel GAC? In Esplora risorse, apri la cartella C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System.Data.Entity \ v4.0_4.0.0.0__b77a5c561934e089 o l'equivalente sul tuo computer. Fare clic con il tasto destro su System.Data.Entity.dll, selezionare la scheda Dettagli e guardare la versione del prodotto. Se è "4.0.30319.17379", allora hai installato .NET 4.5. Se è "4.0.30319.1", in qualche modo hai ancora installato .NET 4. –

5

Assicurati di aver installato .net 4.5 sul tuo sistema di destinazione. Ho avuto lo stesso messaggio, ho scoperto che non avevo installato .net 4.5 su uno dei miei server della farm.

0

Se non riesci a risolvere i 4.2 System.Data.Entità dal GAC come ho fatto io, dove si è lamentato il programma di installazione dipendesse da questo,

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 

è possibile liberarsi delle chiavi nel Registro di sistema da questa cartella:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Assemblies\Global 

ed eseguire nuovamente il gacutil/comando uf

0

ho risolto questo problema rimuovendo la politica:

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

che ha avuto questa informazione: ... bindingRedirect oldVersion = "4.0.0.0" newVersion = "4.2.0.0" ...

spero che aiuta Rui