2017-11-16 7 views
1

Fehle ich etwas oder wurde die Definition für Benutzer aus IdentityRole in Identity Core 2 entfernt?Fehlt IdentityRole IdentityRole Definitionen für Benutzer?

Ich benutze asp.net Core 2 und ich muss die Anzahl der Benutzer pro Rolle berechnen. Dies funktionierte gut in Core-1 mit dem folgenden Standardcode

public class ApplicationRoleController : Controller 
{ 
    private readonly RoleManager<ApplicationRole> roleManager;  
    public ApplicationRoleController(RoleManager<ApplicationRole> roleManager) 
    { 
     this.roleManager = roleManager; 
    } 

    [HttpGet] 
    public IActionResult Index() 
    { 
     List<ApplicationRoleListViewModel> model = new List<ApplicationRoleListViewModel>(); 
     model = roleManager.Roles.Select(r => new 
     { 
      RoleName = r.Name, 
      Id = r.Id, 
      Description = r.Description, 
      NumberOfUsers = r.Users.Count 
     }).ToList() 
     .Select(r => new ApplicationRoleListViewModel 
     { 
      RoleName = r.RoleName, 
      Id = r.Id, 
      Description = r.Description, 
      NumberOfUsers = r.NumberOfUsers 
     }).ToList(); 

     return View(model); 
    } 

In My Anwendung mit Core 2, die Linie NumberOfUsers = r.Users.Count, wobei r aus der Klasse ApplicationRole mit dem Fehler abgeleitet wird, dass „ApplicationRole enthält keine Definition für Benutzer "Die ApplicationRole erbt von IdentityRole.

using Microsoft.AspNetCore.Identity; 
using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 
using System; 

public class ApplicationRole : IdentityRole 
{ 
    public string Description { get; set; } 
    public DateTime CreatedDate { get; set; } 
    public string IPAddress { get; set; } 
} 
+0

'IdentityRole' hat noch nie eine' Benutzer 'Eigenschaft importiert wird. Die Beziehung zwischen Rollen und Benutzern wurde immer über die Entität 'IdentityUserRole' definiert, die jeweils Fremdschlüssel, aber auch keine Navigationseigenschaften hatte. –

+1

@Chriss Danke für den Kommentar. Aber warum funktioniert der Code mit Core 1 und funktioniert nicht mehr in Core 2? Ich bleibe verwirrt. –

Antwort

1

können Sie diese 2 offenbar mit Core

var admins = _userManager.GetUsersInRoleAsync("Admin").Result; 
var number = admins.Count; 

Die Frage verwenden, ist, dass sie die Navigationseigenschaften in AspNetUsers AspNetUserRoles AspNetRoles verzichten. Keine Ahnung warum. Es ist sehr frustrierend um ehrlich zu sein. Angeblich kannst du sie wieder umsetzen, aber bisher hatte ich kein Glück. Ich versuche hier einen Weg zu finden, alle Benutzer mit all ihren Rollen aufzulisten. Ich denke, der obige Code ist, was Sie brauchen.

Auch _userManager als solche in einem Controller

private readonly UserManager<ApplicationUser> _userManager; 


    public MyControllerController(DBContext context, UserManager<ApplicationUser> userManager) 
    { 
     this.context = context; 
     _userManager = userManager; ; 
    } 
+0

Danke Elias. Das hat den Trick gemacht –

Verwandte Themen