Примером может быть эта модель:
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; }
}
Если вам не интересно извлекать всех пользователей, которые находятся в определенной роли , добавляя свойство навигации ...
public ICollection<User> Users { get; set; }
... классу Role
было бы ненужными накладными расходами.
Но вы все равно должны EF сказать, что существует отношение многие ко многим между User
и Role
...
modelBuilder.Entity<User>()
.HasMany(u => u.Roles)
.WithMany();
... потому что сопоставления соглашения по умолчанию создали бы неправильное отношение, а именно отношение один ко многим, соответствующее этому отображению:
modelBuilder.Entity<User>()
.HasMany(u => u.Roles)
.WithOptional();