Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Entity Framework: "The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects."

I have this code (VS2010 ASP.NET MVC 3 with EF 4):

Project project = new Project();
project.Number = number;
project.Name = name;
context.AddObject(project);

ProjectUser projectUser = new ProjectUser();
projectUser.User = user;
projectUser.Status = 1;
project.ProjectUsers.Add(projectUser);

context.SaveChanges(true);

It generates the following error (on the "project.ProjectUsers.Add(projectUser)" line)

"The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects."

I don't understand why cause, as far as I know, both objects are using the same ObjectContext (but I'm new to EF).

What am I doing wrong? Thanks for your help!

like image 358
Canam Avatar asked Jul 14 '11 21:07

Canam


2 Answers

If your user variable is an entity type, and it is assigned to a different context, then you'd experience this problem.

I don't think the problem is between your Project and ProjectUser objects, only because your ProjectUser object isn't explicitly assigned to a context - I think by default it will go to the same context as the Project when you go to save it.

I believe you get this error only when you truly have two contexts and try to join them together.

like image 96
Joe Enos Avatar answered Nov 09 '22 15:11

Joe Enos


Just list you did for Project, you need to add the ProjectUser to the context. So mimic the line:

context.AddObject(project);

And instead make it

context.AddObject(projectUser);

And do that before you add it to the collection on project.

like image 20
TRayburn Avatar answered Nov 09 '22 16:11

TRayburn