Ich habe folgendes ApplicationUser Modell:ASP MVC Build Throwing Warnung für ApplicationUser-Rollen Navigationseigenschaft?
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<ApplicationRole> Roles { get; set; }
public bool HasRole(string _role)
{
return Roles.Any(r => r.Name == _role);
}
public bool HasPermission(string _permission)
{
return Roles.Any(r => r.Permissions
.Any(p => p.Name == _permission));
}
}
Aber wenn ich ein Build ich die folgende Warnmeldung aus:
ApplicationUser.Roles hides inherited member
'IdentityUser<string, IdentityUserLogin,IdentityUserRole, IdentityUserClaim>.Roles.
To make the current member override that implementation, add the overide keyword. Otherwise
add the new keyword.
Ist etwas falsch mit meiner Implementierung oder sollte es anders gemacht werden? Ich habe die Navigationseigenschaft "Rollen" hinzugefügt, sodass ich die HasRole- und HasPermission-Methoden implementieren kann.
meine Erlaubnis und ApplicationRole Modelle umgesetzt werden, wie folgt:
public class Permission
{
public byte Id { get; set; }
public string Name { get; set; }
public virtual List<ApplicationRole> Roles { get; set; }
}
public class ApplicationRole : IdentityRole
{
public ApplicationRole() : base() { }
public ApplicationRole(string name) : base(name) { }
public virtual ICollection<Permission> Permissions { get; set; }
public bool IsPermissionInRole(string _permission)
{
return Permissions.Any(p => p.Name == _permission);
}
}
Ich löschte meine Antwort - nachdem Sie erklärt haben, warum Sie 'Rollen' überschreiben mussten, habe ich nichts nützliches hinzuzufügen - Entschuldigung! Ich kenne die IdentityRole/IdentityUserRole-Klassen und ihre generischen Deklarationen nicht gut genug, um Ihnen im Moment eine Antwort zu geben. –