Может кто-нибудь определить, почему я продолжаю получать эту ошибку при тестировании EF 5 бета - PullRequest
30 голосов
/ 07 марта 2012

Установлена ​​бета-версия Visual Studio 11, так как она хотела протестировать бета-версию EF 5, но продолжаю нажимать на эту ошибку.

Метод не найден: 'Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior (Boolean)'.

Project - это новое пустое приложение 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();
    }
}

Поискал ошибку в Google, но ничего не появилось, и яЯ не совсем уверен, что ошибка относится к.Я добавил фрагмент трассировки стека ниже, если это поможет.

[MissingMethodException: метод не найден: 'Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior (Boolean)'.] System.Data.Entity.Internal.LazyInternalContext.InitializeContext () +0 System.Data.Entity.Internal.InternalContext.Initialize () + 31
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForTypeSystem.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +137<br> 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<br> System.Data.Entity.Internal.Linq.InternalSet 1.Add (объектный объект) +200 System.Data.Entity.DbSet`1.Add (сущность TEntity) + 72

Ответы [ 4 ]

60 голосов
/ 07 марта 2012

Похоже, вы используете EF5 EntityFramework.dll, но затем работаете с .NET 4, установленным вместо .NET 4.5.

Если вы намереваетесь использовать .NET 4.5, убедитесь, что .NET 4.5 установлен на машине, на которой вы выполняете код. VS11 устанавливает .NET 4.5 для вас, но вы также можете установить только среду выполнения на компьютере, отличном от dev.

Если вы намереваетесь настроить таргетинг на .NET 4, убедитесь, что в вашем проекте выбрана целевая версия .NET 4, а затем удалите и переустановите пакет EF5 NuGet. Вы должны удалить и переустановить, потому что NuGet не изменит используемую сборку автоматически при повторной привязке проекта.

Обновление:

Вы также можете увидеть это исключение, если у вас все еще установлена ​​EF June CTP или если он не был удален правильно. Пожалуйста, попробуйте полностью удалить июньскую CTP перед установкой VS11. Если проблемы по-прежнему возникают, откройте «Командная строка разработчика» от имени администратора и запустите:

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
5 голосов
/ 06 декабря 2012

Убедитесь, что в вашей целевой системе установлен .net 4.5. У меня было такое же сообщение, оказалось, что на одном из серверов моей фермы не установлен .net 4.5.

0 голосов
/ 17 октября 2013

Я решил эту проблему, удалив политику:

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

Которые имели эту информацию: ... bindingRedirect oldVersion = "4.0.0.0" newVersion = "4.2.0.0" ...

Надеюсь, это поможетРуи

0 голосов
/ 19 декабря 2012

Если у вас есть проблемы с избавлением от 4.2. System.Data.Entity из GAC, как я сделал, где он жаловался, что установщик зависел от него,

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

...