2009-06-01 16 views
5

Se ho una relazione molti-a-molti tra Utenti e Ruoli e ho un'istanza di un'entità Utente e diversi ruoli Ids posso inserire una relazione tra i due tipi di entità senza avere nessun altro ruolo dati e senza prima fare una selezione sui ruoli?Come si inserisce un'entità per una relazione molti-a-molti? (Entity Framework)

Aggiornamento:

non avrebbe potuto essere abbastanza chiaro. Non ho un'istanza di un ruolo, solo il ruolo id. È possibile creare la relazione tra utente e ruolo senza prima riempire un oggetto ruolo dal database?

risposta

9

Sì se v'è gli ID ed è necessario mettere in relazione le

Si dovrebbe essere in grado di fare questo (pseudo codice)

// 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 chiave qui è che AttachTo mette un'entità nella ObjectState manager nello stato invariato. Finché non è necessario modificare quell'entità e utilizzare solo se per la creazione di relazioni, non è nemmeno necessario conoscere tutti i valori delle proprietà, il PK è sufficiente.

Una volta collegato, è possibile creare la relazione.

Spero che questo aiuti

Acclamazioni Alex

+0

Grazie, proverò e ti farò sapere come va. – adam0101

+0

Ottimo, funziona per me. Grazie –

2

Se non si sta utilizzando il collegamento dati, sicuro. Molti a molti vengono mappati come elenco di riferimenti tra loro. User.Roles.Add (Role ...) dovrebbe andare bene.

+1

non ho un'istanza di un ruolo, ho solo un ruolo id. Funzionerà se creo un nuovo ruolo e specifichi solo l'id? Proverà a inserirlo nel database? Speriamo di no, perché esiste già lì. – adam0101

Problemi correlati