in Identity 2.0.0 abbiamo ruoli proprietà di navigazione in ApplicationUser con tipo IdentityUserRoles e abbiamo Utenti proprietà di navigazione in IdentityRole con lo stesso tipo IdentityUserRolesApplicationUser e ApplicationRole proprietà di navigazione a Identità 2.0.0
qui è
namespace Microsoft.AspNet.Identity.EntityFramework
{
// Summary:
// EntityType that represents a user belonging to a role
//
// Type parameters:
// TKey:
public class IdentityUserRole<TKey>
{
public IdentityUserRole();
// Summary:
// RoleId for the role
public virtual TKey RoleId { get; set; }
//
// Summary:
// UserId for the user that is in the role
public virtual TKey UserId { get; set; }
}
}
così, quando ho scorrere context.Users posso solo ID ruolo
c'è un modo per fare standart molti-a-molti mappatura betw un ApplicationUser e ApplicationRole?
Voglio essere in grado di fare qualcosa di simile
foreach (var user in ApplicationDbContextInstance.Users)
{
List<ApplicationRole> UserRoles = user.Roles.ToList();
/*
some logic ...
*/
}
UPDATE:
dopo alcuni lavori su questa questione ho trovato una soluzione per il mio caso. forse non è così elegante come può essere, ma nel mio caso devo estendere IdentityUserRole con proprietà di navigazione aggiuntive
ho esteso IdentityUserRole a ApplicationUserRole e apportare le modifiche appropriate in tutte le soluzioni. Ecco la mia nuova IdentityUserRole:
public class ApplicationUserRole : IdentityUserRole<string>
{
public virtual ApplicationUser User { get; set; }
public virtual ApplicationRole Role { get; set; }
public virtual ICollection<GeoSectorForUser> GeoSectors { get; set; }
}
e ora posso avere tutti gli utenti in certo ruolo in questo modo:
foreach(ApplicationRole role in db.Roles){
List<ApplicationUser> users = role.Users.Select(s => s.User).ToList();
}
nel mio caso è necessaria AplicationUserRole per la memorizzazione di ulteriori proprietà di navigazione in modo che la soluzione è lavorato per me. ma ho ancora chiedendo come creare pulire relazione molti-a-molti tra IdentityUser e IdentityRole
'IdentityUserRole' è l'oggetto intermedio che è già fornendo la relazione molti-a-molti. quindi 'IdentityUser' <->' IdentityUserRole' <-> 'IdentityRole ' – DavidG
L'aggiornamento non funziona per me. Ottengo eccezioni quando provo a creare una nuova migrazione. – Thomas