任何人都可以发现为什么我不断收到此错误测试EF 5测试版任何人都可以发现为什么我不断收到此错误测试E

2019-05-12 04:43发布

安装Visual Studio 11 Beta版为想考EF 5测试阶段,但不停的按这样的错误。

找不到方法:“太虚System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(布尔)”。

项目是一个新的空白MVC3应用和下面是一些代码,说明错误是如何发生的。

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

看着对谷歌,但没有任何错误过来了,我不太清楚是什么错误指的是。 我的情况下,这将有助于增加下面的堆栈跟踪的一个片段。

[MissingMethodException:方法未找到: '无效System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(布尔值)'。] System.Data.Entity.Internal.LazyInternalContext.InitializeContext()0 System.Data.Entity.Internal.InternalContext.Initialize ()31
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(类型的EntityType)+39
System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +137
System.Data.Entity.Internal.Linq.InternalSet
1.Initialize() +137
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.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +236
System.Data.Entity.Internal.Linq.InternalSet
1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +236
System.Data.Entity.Internal.Linq.InternalSet
1.增加(对象实体)+200 System.Data.Entity.DbSet`1.Add(TEntity实体)+72

Answer 1:

看起来你正在使用的EF5 EntityFramework.dll但后来安装的,而不是.NET 4.5 .NET 4运行。

如果您正打算面向.NET 4.5,然后确保.NET 4.5的机器上安装在其上运行的代码。 VS11安装.NET 4.5的你,但你也可以在非开发计算机上只安装运行。

如果您正打算面向.NET 4,然后确保你的项目设置为面向.NET 4,然后卸载并重新安装EF5 NuGet包。 您必须卸载并重新安装,因为的NuGet在使用中不会自动改变组装时,项目重新taregted。

更新:

您还可以看到这个异常,如果您还安装了EF六月CTP,或者如果它未能正确卸载。 请尝试完全安装VS11前卸载六月CTP。 如果仍然看到问题他们打开“开发者命令提示符”以管理员身份并运行:

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

如果仍然失败,那么你可以尝试强行从与GAC卸载:

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


Answer 2:

请确保您有.NET 4.5安装在目标系统上。 我有同样的消息,原来我没有.NET安装在我的农场的一个服务器4.5。



Answer 3:

如果你有麻烦从GAC像我一样,在那里抱怨安装程序取决于它摆脱了4.2 System.Data.Entity的的,

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

你可以摆脱在此文件夹中的注册表键的:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Assemblies\Global

并重新运行GACUTIL / UF命令



Answer 4:

我解决了这个问题移除政策:

C:\ WINDOWS \ Microsoft.NET \装配\ GAC_MSIL \ policy.4.0.system.data.entity \ v4.0_0.0.0.0__b77a5c561934e089 \ policy.4.0.system.data.entity.config

其中有这样的信息:... bindingRedirect oldVersion = “4.0.0.0” NEWVERSION = “4.2.0.0” ......

希望它可以帮助锐



文章来源: Can anyone spot why I keep getting this error testing the EF 5 beta