I want to create a many-to-many relationship in EF. Normally I would use the InverseProperty attribute, however, in this case:
Role ( Id, Name, ICollection<Privilege> )
Privilege ( Id, Name )
I don't have an inverse property. How to tell EF that a privilege may be used in more than one Role?
[ Currently EF puts a Role_Id column in the Privilege table. This is not what I want :-) ]
Edit: I do not want to use the Fluent API, I'm looking for an attribute.
modelBuilder.Entity<Role>()
.HasMany(r => r.Privileges)
.WithMany() // <- no parameter = no inverse property
.Map(m =>
{
m.ToTable("RolePrivileges");
m.MapLeftKey("RoleId");
m.MapRightKey("PrivilegeId");
});
I have seen that you don't want Fluent API, but it is not possible with data annotations. Mapping options with annotations are only a subset of the options with Fluent API and this is a case where a mapping option with data annotations is missing. You need Fluent API here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With