Ответ 1
Вы не можете сопоставить его как много-ко-многим. Если вы добавите дополнительное поле в таблицу переходов и хотите получить доступ к этому полю в приложении, вам необходимо продвинуть свою таблицу соединений в сущность и использовать два отношения "один ко многим":
public class Badge {
...
public virtual ICollection<UserBadge> UserBadges { get; set; }
}
public class User {
...
public virtual ICollection<UserBadge> UserBadges { get; set; }
}
public class UserBadge {
public int UserId { get; set; }
public int BadgeId { get; set; }
public string B { get; set; }
public virtual Badge Badge { get; set; }
public virtual User User { get; set; }
}
Соглашения по умолчанию должны правильно определять отображение, за исключением ключа для таблицы UserBadge
, которое должно быть выполнено либо в Fluent-API, либо в аннотациях данных.
modelBuilder.Entity<UserBadge>().HasKey(e => new { e.UserId, e.BadgeId });