entity framework - efesios - ¿Alguien puede detectar por qué sigo recibiendo este error al probar la beta de EF 5?
efesios 5:23-24 (4)
Instalé Visual Studio 11 Beta como quería probar EF 5 Beta, pero sigue dándole un error.
Método no encontrado: ''Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior (Boolean)''.
Project es una nueva aplicación MVC3 en blanco y debajo hay un código que ilustra cómo ocurre el error.
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();
}
}
Busqué el error en google pero no surgió nada y no estoy muy seguro de a qué se refiere el error. Agregué un fragmento del stacktrace a continuación en caso de que ayude.
[MissingMethodException: no se encontró el método: ''Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior (Boolean)''.] System.Dit.Parque de quejas de los animales de compañía. () +31
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (Type entityType) +39
System.Data.Entity.Internal.Linq.InternalSet1.Initialize() +137
System.Data.Entity.Internal.Linq.InternalSet1.Initialize() +137
System.Data.Entity.Internal.Linq.InternalSet1.Initialize() +137
1.get_InternalContext () +38 System.Data.Entity.Internal.Linq.InternalSet
System.Data.Entity.Internal.Linq.InternalSet1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +236
System.Data.Entity.Internal.Linq.InternalSet1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +236
System.Data.Entity.Internal.Linq.InternalSet1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +236
1.Add (entidad objeto) +200 System.Data.Entity.DbSet`1.Add (entidad TEntity) +72
System.Data.Entity.Internal.Linq.InternalSet
Asegúrese de tener instalado .net 4.5 en su sistema de destino. Tuve el mismo mensaje, resultó que no tenía .net 4.5 instalado en uno de los servidores de mi granja.
Parece que está utilizando el EntityFramework.dll EF5 pero luego ejecutando con .NET 4 instalado en lugar de .NET 4.5.
Si tiene la intención de apuntar a .NET 4.5, asegúrese de que .NET 4.5 esté instalado en la máquina en la que está ejecutando el código. VS11 instala .NET 4.5 por usted, pero también puede instalar solo el tiempo de ejecución en una máquina que no sea de desarrollo.
Si tiene la intención de apuntar a .NET 4, asegúrese de que su proyecto esté configurado para apuntar a .NET 4 y luego desinstale y vuelva a instalar el paquete EF5 de NuGet. Debe desinstalar y volver a instalar porque NuGet no cambiará el ensamblaje en uso automáticamente cuando el proyecto se re-taregted.
Actualizar:
También puede ver esta excepción si todavía tiene el EF June CTP instalado o si no se desinstaló correctamente. Por favor, intente desinstalar el CTP de junio por completo antes de instalar VS11. Si aún ve problemas, abra un "Símbolo del sistema del desarrollador" como administrador y ejecute:
gacutil /u System.Data.Entity,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
Si esto todavía falla, entonces puede intentar forzar la desinstalación de la GAC con:
gacutil /uf System.Data.Entity,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
Resolví este problema eliminando la política:
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
Que tenía esta información: ... bindingRedirect oldVersion = "4.0.0.0" newVersion = "4.2.0.0" ...
Espero que ayude a Rui
Si tiene problemas para deshacerse de la 4.2 System.Data.Entity del GAC como lo hice yo, donde se quejó el instalador dependía de ello,
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
Puede deshacerse de las claves en el registro de esta carpeta:
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Installer/Assemblies/Global
y vuelva a ejecutar el comando gacutil / uf