2009-06-01 8 views
5

Si tengo una relación de varios a varios entre Usuarios y roles y tengo una instancia de una entidad de usuario y varios roles Ids puedo insertar una relación entre los dos tipos de entidades sin tener ningún otro rol datos y sin hacer una selección en las funciones primero?¿Cómo se inserta una entidad para una relación de muchos a muchos? (entidad marco)

Actualización:

podría no haber sido lo suficientemente clara. No tengo una instancia de una función, solo la id. De función. ¿Es posible crear la relación entre el usuario y el rol sin llenar primero un objeto Rol de la base de datos?

Respuesta

9

Sí si tiene los ID y hay que relacionarlos

Usted debe ser capaz de hacer esto (pseudo código)

// how you get this doesn't matter so long as it is in the Context 
User user = ...; 
Role role = new Role {Id = 2}; 
// role 2 is in unchanged state 
ctx.AttachTo("Roles", role); 
// role 2 is unchanged + added relationship between user and role 2 
user.Roles.Add(role); 
ctx.SaveChanges(); 

La clave aquí es que AttachTo pone una entidad en la ObjectState gerente en el estado sin cambios. Siempre que no necesite modificar esa entidad, y solo la use para la construcción de relaciones, ni siquiera necesita conocer todos los valores de las propiedades, la PK es suficiente.

Una vez que lo tiene unido, puede construir la relación.

espero que esto ayude

Saludos Alex

+0

Gracias, lo probaré y le contaré cómo va. – adam0101

+0

Genial, me funciona. Gracias –

2

Si no está utilizando enlace de datos, seguro. Muchos a muchos se mapean como una lista de referencias entre sí. User.Roles.Add (Rol ...) debería estar bien.

+1

no tengo una instancia de un papel, sólo tengo un id de papel. ¿Funcionará si creo un nuevo Rol y solo especifico el id? ¿Intentará insertarlo en la base de datos? Con suerte no, porque ya existe allí. – adam0101

Cuestiones relacionadas