Я попытался добавить новое отношение «многие ко многим» между двумя таблицами в моей модели БД.Сгенерированная миграция игнорирует указанную мной таблицу ссылок и вместо этого добавляет внешний ключ в левую таблицу.Как я могу это исправить?
Я использовал тот же формат спецификации для других отношений «многие ко многим», которые работали нормально.
public class Competitor
{
[Key]
public Guid ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName { get { return string.Format("{0} {1}", FirstName, LastName).Trim(); } }
public bool IsMatchResult { get; set; }
public virtual ICollection<Title> Titles { get; set; }
public virtual ICollection<MatchParticipant> MatchesParticipated { get; set; }
public virtual ICollection<MatchResult> MatchResults { get; set; }
public virtual ICollection<TagTeam> TagTeams { get; set; }
public virtual ICollection<Brand> Brands { get; set; }
}
public class Brand
{
[Key]
public Guid ID { get; set; }
public string Name { get; set; }
public Guid? ParentID { get; set; }
[ForeignKey("ParentID")]
public virtual Brand Parent { get; set; }
public virtual ICollection<Event> Events { get; set; }
public virtual ICollection<Competitor> Roster { get; set; }
}
modelBuilder.Entity<Brand>()
.HasMany<Competitor>(c => c.Roster)
.WithMany()
.Map(mp =>
{
mp.MapLeftKey("BrandID");
mp.MapRightKey("CompetitorID");
mp.ToTable("BrandCompetitors");
});
Полученная миграция:
public override void Up()
{
CreateTable(
"dbo.BrandCompetitors",
c => new
{
BrandID = c.Guid(nullable: false),
CompetitorID = c.Guid(nullable: false),
})
.PrimaryKey(t => new { t.BrandID, t.CompetitorID })
.ForeignKey("dbo.Brand", t => t.BrandID, cascadeDelete: true)
.ForeignKey("dbo.Competitor", t => t.CompetitorID, cascadeDelete: true)
.Index(t => t.BrandID)
.Index(t => t.CompetitorID);
AddColumn("dbo.Brand", "Competitor_ID", c => c.Guid());
CreateIndex("dbo.Brand", "Competitor_ID");
AddForeignKey("dbo.Brand", "Competitor_ID", "dbo.Competitor", "ID");
}
Я не понимаю, почему он создает новый столбец внешнего ключа для бренда, а не просто таблицу ссылок.