An example might be this model:
public class User
{
public int UserId { get; set; }
public string Name { get; set; }
public ICollection<Role> 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<User> 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<User>()
.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<User>()
.HasMany(u => u.Roles)
.WithOptional();
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…