Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can anyone spot why I keep getting this error testing the EF 5 beta

Installed visual studio 11 beta as wanted to test EF 5 beta but keep hitting this an error.

Method not found: 'Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)'.

Project is a new blank MVC3 application and below is some code that illustrate how the error happens.

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

Looked for the error on google but nothing came up and i'm not quite sure what error is referring to. I added a snippet of the stacktrace below in case it will help.

[MissingMethodException: Method not found: '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.GetEntitySetAndBaseTypeForType(Type entityType) +39
System.Data.Entity.Internal.Linq.InternalSet1.Initialize() +137
System.Data.Entity.Internal.Linq.InternalSet
1.get_InternalContext() +38 System.Data.Entity.Internal.Linq.InternalSet1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +236
System.Data.Entity.Internal.Linq.InternalSet
1.Add(Object entity) +200 System.Data.Entity.DbSet`1.Add(TEntity entity) +72

like image 259
Drauka Avatar asked Mar 06 '12 21:03

Drauka


2 Answers

Looks like you are using the EF5 EntityFramework.dll but then running with .NET 4 installed instead of .NET 4.5.

If you are intending to target .NET 4.5, then make sure that .NET 4.5 is installed on the machine on which you are running the code. VS11 installs .NET 4.5 for you, but you can also install just the runtime on a non-dev machine.

If you are intending to target .NET 4, then make sure that you project is set to target .NET 4 and then uninstall and reinstall the EF5 NuGet package. You must uninstall and reinstall because NuGet won't change the assembly in use automatically when the project is re-taregted.

Update:

You may also see this exception if you still have the EF June CTP installed or if it failed to uninstall correctly. Please try to uninstall the June CTP fully before installing VS11. If you still see problems them open a "Developer Command Prompt" as Administrator and run:

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

If this still fails, then you can attempt to force the uninstall from the GAC with:

gacutil /uf System.Data.Entity,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089 
like image 81
Arthur Vickers Avatar answered Sep 20 '22 11:09

Arthur Vickers


Make sure you have .net 4.5 installed on your target system. I had the same message, turned out I didn't have .net 4.5 installed on one of my farm servers.

like image 39
ddd Avatar answered Sep 19 '22 11:09

ddd