Many-to-many insert with Entity Framework

Total Post:117


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

  1. 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 };
        var user = new User() { ... };

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

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


Please check, If you want to make this post sponsored

You are not a Sponsored Member. Click Here to Subscribe the Membership.