I recently came by the class ManyNavigationPropertyConfiguration<TEntity, TTarget>
, and within that class there I found a method named WithMany() with 2 overloads.
The first overload:
WithMany()
Configures the relationship to be
many:many without a navigation
property on the other side of the
relationship.
The second overload:
WithMany(Expression<Func<TTarget, ICollection<TEntity>>>)
Configures the relationship to be
many:many with a navigation property
on the other side of the relationship.
Now is my question, why would you configure a relationship to be many:many without a navigation property (the first overload)? I dont see any scenarios where that would be helpful… Any thoughts?
An example might be this model:
If you are never interested to retrieve all users which are in a specific role, adding a navigation property …
… to the
Roleclass would be unnecessary overhead.But you still must EF tell that a many-to-many relationship between
UserandRoleexists …… because the default convention mappings would create a wrong relationship, namely a one-to-many relationship, corresponding to this mapping: