MANY-TO-MANY INSERT WITH ENTITY FRAMEWORK

Total Post:117

Points:821
 7936  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. 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.)

      Modified On Mar-31-2018 03:17:07 AM

Answer

NEWSLETTER

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