MANY-TO-MANY INSERT WITH ENTITY FRAMEWORK

jayprakash sharma

Total Post:117

Points:821
Posted by  jayprakash sharma
 7162  View(s)
Ratings:
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.

  1. Pravesh Singh

    Post:101

    Points:709
    Re: Many-to-many insert with Entity Framework

    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.)

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!