Home > DeveloperSection > Forums > Many-to-many insert with Entity Framework
jayprakash sharma
jayprakash sharma

Total Post:117

Points:821
Posted on    September-28-2013 4:09 AM

 ADO.Net ADO.Net 
Ratings:


 1 Reply(s)
 5028  View(s)
Rate this:
I'm two entities in my Data Model, for example User and Role, both having the ID field as primary key. There's a many-to-many relationship between them. In the database there are three tables: Users, Roles and UsersRoles junction table.

I'm trying to add a new user to the Users table:

using(var myContext = new MyContext)
{
   var user = new User() { ... };
   user.Roles.Add(new Role() { ID = 1 });
}

The same role can be already be used by another Users, so, when I try to add a new User with the same Role, I become Primary key violation as EF tries to add a new record to the Roles table.

Is there any way to tell the Entity Framework not to add a new record to the Roles table, when such role already exists, but only update the Users and UserRoles tables? EF version 1.0

Thanks in advance.



Pravesh Singh
Pravesh Singh

Total Post:101

Points:709
Posted on    September-28-2013 6:39 AM

Hey Jay!

If the role already exists in the DB you must EF tell that by attaching the role to the context:

using(var myContext = new MyContext)
{
    var role1 = new Role() { ID = 1 };
    myContext.Roles.Attach(role1);
    var user = new User() { ... };
    user.Roles.Add(role1);
    myContext.Users.AddObject(user);
    myContext.SaveChanges();
}

(I hope that this also works the same way in EF 1.)


Don't want to miss updates? Please click the below button!

Follow MindStick