2
I have an automatic mapping of Controllers
and its Actions
running on application startup (file Global.asax
).
I use this to give permission to the user Controller x Action
if he owns that combination of access rights. Controller + Action + Role
.
So I need to create a relationship MenuItem x Roles
. But I don’t know how to add this to the app. It will be a relationship N x N
.
So I have this:
public class MenuItem
{
public MenuItem {
Roles = new HashSet<IdentityRole>();
}
[Key]
public int Id { get; set; }
[StringLength(40)]
[Required(AllowEmptyStrings = false]
public string Name { get; set; }
[Required]
[ForeignKey("Menu")]
public int MenuId { get; set; }
public virtual Menu Menu { get; set; }
[InverseProperty("MenuItems")]
public virtual ICollection<IdentityRole> Roles { get; set; }
}
Then I tried:
namespace Microsoft.AspNet.Identity.EntityFramework
{
public partial class IdentityRole
{
public IdentityRole {
MenuItems = new HashSet<MenuItem>();
}
[InverseProperty("Roles")]
public virtual ICollection<MenuItem> MenuItems { get; set; }
}
}
However, Visual Studio complains error in some parts of the code saying that the Identityrole class exists both in Microsoft.AspNet.Identity.EntityFramewrk
when in App.Domain
(where are the classes of my application).
I tried too
Exclude the partial class
of IdentityRole
and left the class MenuItem
with the declared navigation property thus:
public class MenuItem
{
...
public virtual ICollection<IdentityRole> Roles { get; set; }
}
However, by doing so the EF creates a field MenuItem_Id
within the table of Roles
(AspNetRoles
), understanding as a relationship 1 x N
.
How to create this relationship?
I can’t remember if it’s possible to make a
partial
ofIdentityRole
. I would make another class derived fromIdentityRole
.– Leonel Sanches da Silva
I find it very complicated to reuse what is written. Write other classes and use them. I think you can do with the Fluent API but the application will do a lot in automatic, and that makes the life of the programmer a hell.
– Leonel Sanches da Silva
I said crap. Then I’ll give you an answer ;)
– Leonel Sanches da Silva
That’s it. Sorry about the outside ball. I’m a little tired today.
– Leonel Sanches da Silva