I recently came by the class ManyNavigationPropertyConfiguration
, and within that class there I found a method named WithMany()>
An example might be this model:
public class User
{
public int UserId { get; set; }
public string Name { get; set; }
public ICollection Roles { get; set; }
}
public class Role
{
public int RoleId { get; set; }
public string Description { get; set; }
}
If you are never interested to retrieve all users which are in a specific role, adding a navigation property ...
public ICollection Users { get; set; }
... to the Role class would be unnecessary overhead.
But you still must EF tell that a many-to-many relationship between User and Role exists ...
modelBuilder.Entity()
.HasMany(u => u.Roles)
.WithMany();
... because the default convention mappings would create a wrong relationship, namely a one-to-many relationship, corresponding to this mapping:
modelBuilder.Entity()
.HasMany(u => u.Roles)
.WithOptional();